Diskuze: vertikální vzdálenost středu otočené krychle od země

Java Java vertikální vzdálenost středu otočené krychle od země

Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Ahoj všichni, potřeboval bych trochu poradi s menším problémem. Mám krychli, ktera je nějak otočená v prostoru. A potřebuji zjistit, jak daleko je její střed od plochého podkladu, na kterém má stát. Samozřejmě bych si mohl z otočení spočítat pozice rohů, najít nejníže položený roh a počítat vertikální vzdálenost středu od tohoto bodu. Nešlo by to ale nějak jednodušeji (rychleji)?

Odpovědět 23.1.2015 13:38
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Silvinios:

Nejsem si jistý, zda rozumím. Dokázal bys problém formulovat trochu (pro mě) srozumitelněji? Stačilo by použít pojmy jako bod, rovina, vzdálenost bodu od roviny, atd. Co znamená vzdálenost od plochého podkladu? Co znamená má stát? Co je vertikální vzdálenost?

 
Nahoru Odpovědět 23.1.2015 20:00
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Silvinios
Zdeněk Pavlátka:

Dobrá. Krychle je nějak otočena a roviny (podkladu) se dotýká v nejníže položeném bodě. (Těch bodů může být víc - hrana, strana) Potřebuji spočítat vzdálenost středu krychle od roviny - délku úsečky kolmé k rovině, jejíž jeden konec leží na rovině a druhý ve středu krychle.

Snad je to takhle dost pochopitelné, kdyby ne, můžu ještě zítra přidat obrázek (dneska už se nedostanu na počítač).

Nahoru Odpovědět 23.1.2015 20:59
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
Zdeněk Pavlátka:

Pozn. Nejníže položeným bodem myslím nejnižší bod krychle -> krychle na něm "stojí" = dotýká se zde roviny (podkladu)

Nahoru Odpovědět 23.1.2015 21:06
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Silvinios
Zdeněk Pavlátka:

Obrázky:
(snad to je na nich dobře vidět, zajímá mě délka červené úsečky)

Nahoru Odpovědět 24.1.2015 11:05
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Luboš Běhounek (Satik):

Jak máš tu krychli zadanou? pomocí rohů nebo středu?

Nahoru Odpovědět 24.1.2015 11:34
:)
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
Zdeněk Pavlátka:

Pomocí středu a otočení podle os xyz.

Nahoru Odpovědět 24.1.2015 12:50
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Luboš Běhounek (Satik):

Vzorec by se odvodit dal, budou tam nejspíš nějaký součty násobků sin a cos podle úhlů a délky strany, ale nejsem takovej matematik, abych ho tu vytáh z rukávu, asi bych nad tím musel nějakou chvíli (nejspíš pár hodin :D ) posedět, nějaký matfyzák to určitě bude vědět rychleji :)

Nahoru Odpovědět 24.1.2015 15:11
:)
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:

Pokud je ten podklad rovina v bodě nula, za takového předpokladu nepotřebuješ nic jiného, než veškerou transformaci, kterou provedeš se základní krychlí, uplatnit i na její střed, který si předem vypočítáš.

V obecném případě bys musel vypočítat rovnici normály na rovinu, která prochází středem krychle a následně spočítat průsečík roviny a této normály.

Snad to bylo dost jasné :)

 
Nahoru Odpovědět 24.1.2015 15:46
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na hanpari
Zdeněk Pavlátka:

Rovina (podklad) je v nulové výšce

Nahoru Odpovědět 24.1.2015 16:49
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:

Oprav mne pokud se pletu ale nestacilo by ti vzit polovinu rozdilu Y hodnot dvou prostorove protilehlych bodu krychle?

 
Nahoru Odpovědět 24.1.2015 17:52
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na hanpari
Zdeněk Pavlátka:

Šlo by to, ale musel bych počítat s nejvyšším a nejnižším bodem a to by znamenalo projít všechny body.

Nahoru Odpovědět 24.1.2015 18:03
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
hanpari
Redaktor
Avatar
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:

Myslel jsem to takto. Potřebuješ jen dva protilehlé body, vypočítáš z úhlopříčky krychle.

 
Nahoru Odpovědět 24.1.2015 18:49
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):

Můžeš sem napsat, co máš přesně zadáno? Nějak mi to není jasné. Pokud bys měl opravdu zadaný střed, pak (pokud rovina prochází nulou a je kolmá na vertikální osu) bys nemusel nic počítat. Znáš délky stran? Rotuje se podle středu nebo podle vrcholu, který se dotýká roviny?

 
Nahoru Odpovědět 24.1.2015 19:18
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Zdeněk Pavlátka:

Mám zadaný střed, ale ne jeho "výšku" - pozici na vertikální ose. Mám pouze x a z daného bodu (osa y je vertikální) a otočení krychle. Tohle jsem předtím zapomněl uvést.

EDIT: rotuje se podle středu

Editováno 24.1.2015 19:40
Nahoru Odpovědět 24.1.2015 19:39
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):

Imho je dost problém v tom, že u rotací v prostoru záleží na jejich pořadí. Tzn. je rozdíl, jestli rotuješ těleso nejdřív kolem osy x a pak kolem osy y a když rotuješ nejdřív kolem osy y a pak kolem osy x. Určitě to nepůjde spočítat žádným triviálním vzorcem. Pokud na to nějaký vzorec je, pravděpodobně bude zahrnovat matice.

 
Nahoru Odpovědět 24.1.2015 20:19
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Zdeněk Pavlátka:

A poradil bys mi alespoň, jak spočítat pozice jednotlivých rohů? Rotace jdou v pořadí x y z.

Nahoru Odpovědět 24.1.2015 20:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):

Tohle jsou rovnice rotace bodu v rovině podle středu souřadné soustavy (viz wiki).
x' = x * cos(alpha) - y * sin(alpha)
y' = x * sin(alpha) + y * cos(alpha)
Musíš si jenom za x a y dosadit souřadnice vrcholu v té rovině, ve které zrovna rotuješ. Tzn pokud rotuješ podle osy x, pak za x v rovnici dosadíš souřadnici z, za y souřadnici y. Pokud budeš rotovat podle y, pak za x dostadíš souřadnici x, za y souřadnici z. Střed krychle musí mít souřadnice (0, 0, 0).
Tohle spočítáš v každé rovině v daném pořadí pro všechny vrcholy.

 
Nahoru Odpovědět  +1 24.1.2015 20:40
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:

Pokud se rotuje kolem středu, tak nevím co řešíš :)
Osa rotace, v tomto případě bod rotace, je jediná souřadnice, která se během rotace nemění :)
A pokud jediný pohyb, která ta krychle udělal, je rotace kolem vlastního středu, tak nemusíš nic počítat, ten bod je pořád stejný. Leda bys myslel třeba střed hrany nebo plochy.

 
Nahoru Odpovědět  -1 24.1.2015 21:02
Avatar
Odpovídá na hanpari
Lukáš Hruda (Luckin):

On chce spočítat rozdíl souřadnic y mezi středem krychle a nejspodnějším bodem krychle. Jinak řečeno střed krychle je v počátku souřadného systému, ale rovina "podlahy" není daná, je určena až rotací krychle.

 
Nahoru Odpovědět  +1 24.1.2015 21:11
Avatar
coells
Redaktor
Avatar
coells:
tx = sin(z) * cos(y)
ty = -sin(x) * sin(y) * sin(z) + cos(z) * cos(x)
tz = -sin(z) * sin(y) * cos(x) - cos(z) * sin(x)

height = abs(tx) + abs(ty) + abs(tz)

Dostanu za to machra na algoritmy?

 
Nahoru Odpovědět  +5 24.1.2015 21:29
Avatar
hanpari
Redaktor
Avatar
Odpovídá na hanpari
hanpari:

Aha, teď už to chápu! Uf, to bylo složité :) Díky

PS: Dejte Coellsovi toho machra :)

 
Nahoru Odpovědět 24.1.2015 21:37
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na coells
Zdeněk Pavlátka:

A jak by se to počítalo pro rotace dle 2 os(x, z)?

Nahoru Odpovědět 26.1.2015 8:59
Kolik jazyků umíš, tolikrát jsi programátor.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 24.