малко геометрийка :)

35 отговора 1331 прегледа
#1

малко геометрийка :)

Трябват ми алгоритъмчета за въртене на обект около точка и за мащабиране пак около точка (3-мерно). Мащабирането е горе-долу лесно ама аз все пак да попитам. И да напомня - ще се радвам на алгоритми, не на теория :)


Я вышел им наперерез...
Отговор
в отговор на MиГ #2

Re: малко геометрийка :)

Момент само .
Какво значи "мащабиране около точка"? Хомотетия ли?
А въртенето... Как се задава ъгъла?

Nihil tam munitum quod non expugnari pecuna possit
Отговор
в отговор на MиГ #3

Re: малко геометрийка !?!

Много си бос, с извинение. Въртене в 3D може да става само около права. За мащабирането Драко е прав.
А сега на тема въртене около права. Това е частен случай на трансформация. Мащабирането, проекциите, също са частен случай на трансформация. Описва се с матрица 4х4 в хомогенни координати. Пише го във всяка аналитична геометрия. Сега идва въпросът: какво ще трансформираш? Точка, права, равнина, повърхнина от 2-ра степен? За всяко нещо си има специална формула. От значение е и как представяш като структури данни геометричните обекти, които ще трансформираш.
Дай ми e-mail, да ти пратя нещо.

Отговор
в отговор на MиГ #4

Re: малко геометрийка :)

a, b, c, agli na zavartane okolo ossite x, y, ili z

xn, yn, zn nacalniu koordinati
x, y, z koordinati sled zavartaneto

parvo puskas PL1 ednokratno
sled tova za vseka tocka ot obekta puskas PL2

procedure pl1;
begin
sx:=sin(a);cx:=cos(a);
sy:=sin(b);cy:=cos(b);
sz:=sin(c);cz:=cos(c);
end;
{-------------------------------}
procedure pl2;
begin
xn:=x*cz-y*sz;yn:=x*sz+y*cz;
x:=xn*cy-z*sy;z:=xn*sy+z*cy;
y:=yn*cx-z*sx;z:=yn*sx+z*cx;
end;

Отговор
в отговор на MиГ #5

Proweri si po6tata

Pratil sym ti ne6to po temata

Отговор
в отговор на CALL-151 #6

Re: малко геометрийка :)

Не е лошо, но ротация по принцип се прави с матрици, понеже имаш 9 умножения вместо 12...
да не говорим че понякога е доста трудно да се изрази една ротация като произведение на ротации по 3те оси както си го написал...

Reality is for people who can't face the Science Fiction!
Отговор
в отговор на Учeниka #7

Re: малко геометрийка !?!

Няма смисъл от хомогенни координати и 4x4 матрици, той не смята да проектира нищо доколкото разбрах.

Reality is for people who can't face the Science Fiction!
Отговор
в отговор на CALL-151 #8

Re: малко геометрийка :)

hubavoi de! tova ako se oprosti moje i 9 umnojenia da stanat!

tova ne preci ti da napises kak se pravi s matrici!
sega nemam spravocnik pod raka!

Отговор
в отговор на atanas #9

Re: Proweri si po6tata

A dali moje da go pratish i na men,
Az imam edno reshenie za moite problemi (vartene na tocki okolo 3 osi)
no shte mi e interesno da vidia i neshto razlichno, toku vij mi hrunala niakoia dobra ideia.

Отговор
в отговор на CALL-151 #10

Re: малко tutoriali :)

Няма смисъл - има на поне хиляда места е Интернет такива tutoriali....

[линк]
[линк]

и т.н....

Reality is for people who can't face the Science Fiction!
Отговор
в отговор на Zemedelec #11

Re: малко tutoriali :)

e, kakto mojese da se ocakva pise sastoto! :-)

Отговор
в отговор на CALL-151 #13

Re: малко tutoriali :)

Сериозно?! Е, не го четох де...
Ми значи ротационните матрици около всяка ос имат вида:

| cosZ sinZ 0 | | cosY 0 sinY | | 1 0 0 |
| -sinZ cosZ 0 | | 0 1 0 | | 0 cosZ sinZ |
| 0 0 1 | | -sinY 0 cosY | | 0 -sinZ cosZ |

( около оста Z ) ( около оста Y ) ( около оста X )

За знаците не залагам главата си, ама голяма работа - най-много да се върти наляво вместо надясно някъде... :)
Та матрицата която ти трябва е получената чрез умножение на тези трите със съответните им ъгли....
А умножение на вектор с матрица е точно 9 операции умножение:

y1 = a11.x1 + a12.x2 + a13.x3
y2 = a21.x1 + a22.x2 + ...
y3 = a31.x1 + ...

Ако обаче някъде се наложи често ротиране на ратационната матрица, тогава се ползват Quaternion-и...

Reality is for people who can't face the Science Fiction!
Отговор
в отговор на atanas #14

Стига сте въртели точки..

Завъртете поне една равнина или повърхнина от втора степен. Последнот е доста интересно. Кой ще познае как става?

Отговор
в отговор на Zemedelec #15

Re: малко tutoriali :)

taka de! nali zatova stava duma!
nakraia sa polucis sastoto deto az napisah, samoce ste e "matemavticeski izdarjano" :-)

dobre de, napisi edna podprogramka deto kato ia vikna sa mi napravi rotacia po trite osi ednovremenno!

Отговор
в отговор на Учeниka #16

Re: Стига сте въртели точки..

mi edna povarhnina se sastoi ot tocki! vartat se tockite-varti se i ravninana!

Отговор
в отговор на MиГ #17

Re: малко геометрийка :)

Хора, трябва ми въртене около точка, не около ос.
Значи представете си един обект в пространството, и една точка, около която се върти. Ако т. съвпада с геометричния център на тялото, то въртенето си е съвсем обикновено. Ако постепенно местим точката в пространството и в един момент тя напусне очертанията на тялото, то то освен около оста си, ще се върти и около точката. Като Земята около Слънцето. Можете ли да си го представите?


Я вышел им наперерез...
Отговор
в отговор на MиГ #18

Malko astronomiya :)

Ne, Grisha :-))) Vyrtene okolo tochka v trimernoto prostranstvo naistina nyama. A Zemyata se vyrti okolo Slynceto spryamo prava, koyato minava prez Slynceto, i e perpendikulyarna na ekliptikata.

Редактирано от Potencialen emigrant на

Отговор
в отговор на MиГ #19

Re: малко геометрийка :)

tiq neshta deto ti gi predlojiha Zemedeleca i CALL-151 sa vyrtene okolo trite osi ednovremenno (x,y i z) rezultata e vyrtene okolo presechenata im tochka...

IF JADEN THEN
GOTO BIRARIA;
Отговор
в отговор на CALL-151 #20

Re: малко tutoriali :)

Tvoeto e s 12 umnojenia - tochka.
Nachina s matricite dava 9 umnojenia - tochka.
Az sum izlojil nachina s matricite - ochevidno.
Koe e sushtoto?
...
predi da naucha za matricite i az rotirah kato towa koeto si napisal - e, ne towa e istinata!

Отговор