Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 24.01.2010, 22:55   #31
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Ошибка синтаксиса.

2odd: Кстати, погуглив понял, что из того самого 2DGraphics возможно установить только два типа линий: SOLID и DOTED. Как я понимаю, SOLID это толщина в 3 пикселя, причем скорее всего рисуют в самом классе по тому же Брезенхему, как plot(x-1,y); plot (x,y); plot(x+1,y) - особо не заморачиваясь. Могу ошибаться конечно, но что-то мне подсказывает....

Есть еще отдельные библиотеки(или как там в яве), писаные сторонними товарищами, но это примерно те-же костыли, как и у меня. Возможно чуть быстрее ибо нативно на яве. Но принцип такой-же.

Также начиная с MIDP2.0 есть вроде-как стандартная функция рисования закрашенных треугольников (UPD: ну да, например здесь уже пробегала в lib_gfx например). Можно мою процедуру fillrectangle заменить на нее, на MIDP2 будет наверно быстрее, с другой стороны на MIDP1 работать не будет вообще.
(Offline)
 
Ответить с цитированием
Старый 25.01.2010, 03:08   #32
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Отрисовка толстых линий

MIDP 1.0 скоро уйдет в историю как и старые профили мидлетов (не даром я их назвал "Под старину"), так что не стоит особо бояться проблем с совместимостью.
(Offline)
 
Ответить с цитированием
Старый 25.01.2010, 22:36   #33
VotapilD
Оператор ЭВМ
 
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений
(для 6 пользователей)
Счастье Ответ: Ошибка синтаксиса.

Вот вроде бы рабочий мой вариант:
Сообщение от VotapilD Посмотреть сообщение
program sincos;
var x1,x2,y1,y2,a,b,c,cos,sin:real;
i:integer;
begin
x1:=0;
y1:=0;
x2:=100;
y2:=100;
a:=abs(trunc(x1-x2));//катит у
b:=abs(trunc(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;
delay(3000);
Скрещение моей формулы и Tronixa в чём ошипка... Не могу найти.
АПД:Нужна библиотека Lib_gfx; А вообще, вот Все библиотеки(Вообще все)!
Вложения
Тип файла: zip sincos_rect.zip (46.3 Кб, 485 просмотров)

Последний раз редактировалось VotapilD, 26.01.2010 в 00:20.
(Offline)
 
Ответить с цитированием
Старый 26.01.2010, 04:50   #34
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Отрисовка толстых линий

Как доведете до блеска алгоритм, я его тогда реализую на Java в виде отдельной библиотеки. Без проблем. Или добавлю функцию рисования толстых линий в Lib_gfx.
(Offline)
 
Ответить с цитированием
Старый 26.01.2010, 08:23   #35
VotapilD
Оператор ЭВМ
 
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений
(для 6 пользователей)
Счастье Ответ: Отрисовка толстых линий

Сегодня... Где-то в 2 часа ночи я закончил алгоритм. Вроде всё верно, фуууф...
ОНО РАБОТАЕТ!

Сообщение от odd Посмотреть сообщение
Как доведете до блеска алгоритм, я его тогда реализую на Java в виде отдельной библиотеки. Без проблем. Или добавлю функцию рисования толстых линий в Lib_gfx.
Посмотри, ещё сильней сжать алгоритм можно?)
Вложения
Тип файла: zip sincos_rect.zip (47.1 Кб, 490 просмотров)
(Offline)
 
Ответить с цитированием
Старый 26.01.2010, 13:36   #36
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Отрисовка толстых линий

Нет, нормально. Больше вряд ли сожмется. Можно конвертировать в либу.
Ждите обновления библиотеки LIb_gfx
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Trazzy (26.01.2010)
Старый 26.01.2010, 15:08   #37
VotapilD
Оператор ЭВМ
 
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Отрисовка толстых линий

Можно ещё сильнее!(наверное)! xa,ya,xb и тд не надо делать реалом(Ставим Инт)!
после нахождения син и кос:

a:=abs(trunc(x1-x2));//катит у
b:=abs(trunc(y1-y2));//катит х
c:=(sqrt(a*a+b*b));//гипотенуза
cos:=(b/c);//cosB
sin:=(a/c);//sinB угол против стороны У
if (x2-x1<0)xor(y1-y2<0) then cos:=-cos;
cosadd:=trunc(cos*h);
sinadd:=trunc(sin*h);

xa:=x1+cosadd;//
ya:=y1+sinadd;// Переносим точки, так
xb:=x2+cosadd;// чтобы линия была параллельна...
...
...
FillTriangle(xa,ya,xb,yb,xc,yc);
FillTriangle(xc,yc,xd,yd,xb,yb);
end;

Но там баги с округлением(((
(Offline)
 
Ответить с цитированием
Старый 27.01.2010, 19:35   #38
im_zorg
Знающий
 
Регистрация: 25.10.2009
Сообщений: 338
Написано 53 полезных сообщений
(для 61 пользователей)
Ответ: Отрисовка толстых линий

odd сделал скачай последьнюю версию lib_gfx
(Offline)
 
Ответить с цитированием
Старый 27.01.2010, 22:12   #39
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Отрисовка толстых линий

Сообщение от im_zorg Посмотреть сообщение
odd сделал скачай последьнюю версию lib_gfx
Я там ещё немного упростил алгоритм. Попробуете округление, вроде бы получилось неплохо.
(Offline)
 
Ответить с цитированием
Старый 27.01.2010, 22:39   #40
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: Отрисовка толстых линий

Сообщение от odd Посмотреть сообщение
Я там ещё немного упростил алгоритм. Попробуете округление, вроде бы получилось неплохо.
Оооо, посмотрел исходник - значит моя формула верна все-таки. А я думал кривая она... Кстати, думаю там нужно вызывать M.G.filltriangle, а не filltriangle - а то получается функция drawline вызывает функцию filltriangle, которая вызывает filltriangle...
(Offline)
 
Ответить с цитированием
Старый 20.11.2011, 23:08   #41
romby
AnyKey`щик
 
Регистрация: 08.11.2011
Сообщений: 11
Написано одно полезное сообщение
Ответ: Отрисовка толстых линий

А есть готовое решение для рисования линий со сглаженными краями (antialiasing)?
(Offline)
 
Ответить с цитированием
Старый 27.02.2012, 18:13   #42
ВиНТ
Оператор ЭВМ
 
Регистрация: 26.02.2012
Сообщений: 26
Написано 0 полезных сообщений
(для 0 пользователей)
Смех Ответ: Отрисовка толстых линий

Сообщение от impersonalis Посмотреть сообщение
рисуйте окружности. Радиус R - толщина линии. Над расстояниям - надо подумать..
садомазохизм

Однако надо не линиями пользоваться, а векторами(вершинами).
Если есть угол, то нужно его найти функцией atan2(y,x)! Вроде в MidletPascal 3.3 есть такая возможность. Так, ну ещё надо сделать вид центрирования это четырёхугольника(из векторов) - надо половину необходимой ширины отделить на каждую вершину разрывая углы на -90 и 90... Сложно.

Последний раз редактировалось ViNT, 27.02.2012 в 20:57.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com