![]() |
Ответ: Ошибка синтаксиса.
Цитата:
UPD: А не, DDA тот еще тормоз, ибо деление.... |
Ответ: Ошибка синтаксиса.
Вложений: 1
Вообще не нужны никакие брезенхамы имхо. Толстая линия - это всего лишь много тонких линий и не более )) Вот прям щаз на коленке накатал. Если не задавать гигантскую ширину, вполне может прокатить ))) Писалось за 5 мин, поэтому если сильно накосячил прошу не пинать больно.
PHP код:
|
Ответ: Ошибка синтаксиса.
Нашел в нете упоминание о классе Graphics2D для java, там есть разные стили линий, и другие графические инструменты, попробую под него либу накатать (если NetBeans на семерку встанет).
|
Ответ: Ошибка синтаксиса.
Вложений: 1
А вообще погорячился я. Интересная задачка на самом деле... После некоторых раздумий пришел к банальному - рисуем основную линию по Брезенхему, причем из каждой нарисовоной точки рисуем еще одну линиию перпендикулярно нашей основной линии.
Ну либо тупо рисовать закрашенный полигон, но это уже деление-умножение, причем подозреваю вешественное. Хотя не известно что еще быстрее будет... UPD: ыыыыы, оказывается изобрел велосипед - http://homepages.enterprise.net/murp...ine/index.html :) |
Ответ: Ошибка синтаксиса.
А что если и правда sin&cos? Седне в школе по памяти на алгебре(на контрольной=) ) накатал:
a:=abs(x1-x2);//катит у b:=abs(y1-y2);//катит х c:=sqrt(a*a+b*b);//гипотенуза cos:=b/c;//cosB sin:=a/c;//sinB угол против стороны У for i:=-2 to 2 do begin x1:=x1+cos*i;// y1:=y1+sin*i;// Переносим точки, так x2:=x2+cos*i;// чтобы линия была параллельна... y2:=y2+sin*i;// DrawLine(trunc(x1),trunc(y1),trunc(x2),trunc(y2)); end; repaint; Павел, я правильно вас понял? Цитата:
|
Ответ: Ошибка синтаксиса.
Выбрался к винде.. Что-то не то....
Код:
program sincos; Зато они параллельны! Это достижение) |
Ответ: Ошибка синтаксиса.
VotapilD, nhal по wine работает.
в втк возможно эмуль входит, но яву я так и не смог поставить нормально((( |
Ответ: Ошибка синтаксиса.
Вложений: 2
Не-не, sin/cos это все тормоза адовые. Да к тому-же еще и float-point. Щаз может полигонами запилю, будет как настоящая :)
UPD: Кое чего получается.... Осталось только код в порядок привести, или фиг с ним? ) |
Ответ: Ошибка синтаксиса.
Вложений: 2
Короче набросал вроде с помощью треугольников. Главный косяк - не помню вообще как найти точки ABCD (см рисунок). По обрывкам памяти и гуглу набросал, но чувствую что криво, што ппц.
Плюсы: - быстро. В процедуре отрисовки треугольника только целочисленные числа. Единственное два деления на итерацию на inner_loop, но не критично. - Когда вертикально или горизонтально - рисуем просто стандартным FillRect - Когда ширина = 1 рисуем просто стандартно Line Минусы: - немного не точно, ибо либо с формулой точек ABCD косяк либо где-то чето не так округляется. Если не придираться - смотрица нормально. - нельзя с помощью такого метода рисовать пунктирные линии например. Хотя с помощью небольшой допилки filltriangle можно. А если впилить простейшее текстурирование можно даже текстурами рисовать ))) Скриншоты всего этого безобразия выше. |
Ответ: Ошибка синтаксиса.
|
Ответ: Ошибка синтаксиса.
Что вы мучаетесь? Может мне легче библиотеку для рисования линии произвольной толщины написать? Будет работать немного быстрее и без глюков. Я вроде геометрию пока не всю забыл.
|
Ответ: Ошибка синтаксиса.
Цитата:
Цитата:
|
Ответ: Ошибка синтаксиса.
Цитата:
|
Ответ: Ошибка синтаксиса.
Цитата:
Но если есть какие-то стандартные средства в яве, чтобы пилить толстые линии - то конечно проще сделать либу, чем так извращатся. :) Вообще будет полезная штука я думаю, особенно если с паттернами (прерывистая там, пунктирная и тд) |
Ответ: Ошибка синтаксиса.
Цитата:
|
Часовой пояс GMT +4, время: 06:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot