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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 29.10.2005, 00:18   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Подкинте ктонить идею как нарисовать треугольник произвольной формы полностью закрашеный имея координаты вершин и цвет заливки. (Это все надо в 2Д сделать).

Зарание спасибо!
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 00:30   #2
jimon
 
Сообщений: n/a
хе
рисуеш какнибудь квадрат - чтобы треугольник в нем был
перебираеш все точки квадрата
если точка находится в треугольнике - то рисуеш ее , если нет то идеш дальше

вот так
 
Ответить с цитированием
Старый 29.10.2005, 00:45   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ентересный вариант... А квадрат рисовать зачем? (шучу)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 00:46   #4
jimon
 
Сообщений: n/a
прямоугольник тоже можно нарисовать
 
Ответить с цитированием
Старый 29.10.2005, 00:56   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Опять не пойму зачем его рисовать так ведь нужную часть экрана зарисовать можно.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 01:00   #6
jimon
 
Сообщений: n/a
упс... очепятка ошибся - не рисовать а вообразить
 
Ответить с цитированием
Старый 29.10.2005, 01:44   #7
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
у меня такая версия, берешь алгоритм рисования линии (думаю рассказывать не надо) и делаешь линии от одной точки (допустим вершина) до точек на "основании" и делаешь так, линии проводишь по точкам типа рисуешь точку на одной линии и сразу на другой, дак вот, между этими точками рисуешь еще одну линию... и так до основания...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 02:06   #8
alex-mad
Модератор
 
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений
(для 10 пользователей)
извините, пока што не очень знаком с компелятором...
и не очень понял Саба..ток што извеняюсь если повторюсь...
но с алгоритмикой знаком...
можно рисовать линию в цикле от 0 до n, где n=sqr((x1+x2)^2+(y1+y2)^2) и i-пораметр цикла
линия(x3,y3)-(x1+i*(x2-x1)/n),y1+i*(y2-y1)/n)
____________________
вроде так норм
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 02:55   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Транслируя на B3D:
x1=10
 y1=0
x2=10 
y2=10
x3=90 
y3=20
Color 255,0,0

n=Sqr((x1+x2)^2+(y1+y2)^2)
For i=1 To n
Line x3,y3,x1+i*(x2-x1)/n,y1+i*(y2-y1)/n

Next
Flip
WaitKey()
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 03:05   #10
alex-mad
Модератор
 
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений
(для 10 пользователей)
для точности закраски
n=sqr((x1+x2)^2+(y1+y2)^2)*.. и тут любое число чем больше тем больше операций, но точнее будет што бы не остались незакрашенные пиксили
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 05:16   #11
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
братва! вы рулите!! ваш алгоритм круче! респект!
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 13:04   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Originally posted by alex-mad@Oct 29 2005, 02:05 AM
для точности закраски
n=sqr((x1+x2)^2+(y1+y2)^2)*.. и тут любое число чем больше тем больше операций, но точнее будет што бы не остались незакрашенные пиксили
Неплохой алгоритм, только при увеличении числа "*.. " ничего не меняется, думаю из-за того, что координаты могут быть только целыми числами... поэтому и закрашивается неполностью, ща попробую алгоритм jimon'а, может лучше выйдет, но все равно спасибо!
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 14:36   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Вот что получилось:

Function TriGon(X1%,Y1%,X2%,Y2%,X3%,Y3%)
	Local Temp%
;Сортировка координат
	If Y2<Y1 Then
 *Temp%=Y1: Y1=Y2: Y2=Temp%
 *Temp%=X1: X1=X2: X2=Temp%
	EndIf
	If Y3<Y2 Then
 *Temp%=Y2: Y2=Y3: Y3=Temp%
 *Temp%=X2: X2=X3: X3=Temp%
	EndIf
	If Y2<Y1 Then
 *Temp%=Y1: Y1=Y2: Y2=Temp%
 *Temp%=X1: X1=X2: X2=Temp%
	EndIf
 *
	K1#=Float(x2-x1)/Float(y2-y1)
	B1#=-y1*K1+X1
	K2#=Float(x3-x1)/Float(y3-y1)
	B2#=-y1*K2+X1
	For Y=Y1 To Y2
 *Line(Y*K2+B2,Y,Y*K1+B1,Y)
	Next
	
	K1#=Float(x2-x3)/Float(y2-y3)
	B1#=-y3*K1+X3
	For Y=Y2+1 To Y3
 *Line(Y*K2+B2,Y,Y*K1+B1,Y)
	Next
End Function
Незнаю на чей алгоритм этот похож, но вроде работает.

2jimon спасибо что направил в нужную сторону
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.10.2005, 16:50   #14
jimon
 
Сообщений: n/a
незачто
 
Ответить с цитированием
Старый 31.10.2005, 16:42   #15
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Имхо, быстрее (и проще) всего будет собрать полигон, отрендерить его и сохранитв image.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вопросик AndruXa Blitz3D 12 13.12.2010 23:56
Вопросик... axel186 2D-программирование 4 27.09.2006 20:00
Вопросик! SubZer0 Загадки 8 21.08.2006 00:45
опять вопросик :) jimon Болтовня 3 26.02.2006 16:17
вопросик :) jimon 3D-программирование 6 16.10.2005 13:29


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


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