Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
Zdeněk Pavlátka:23.1.2015 13:38

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
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Silvinios:23.1.2015 20:00

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
Odpovídá na Silvinios
Zdeněk Pavlátka:23.1.2015 20:59

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
Odpovídá na Zdeněk Pavlátka
Zdeněk Pavlátka:23.1.2015 21:06

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
Odpovídá na Silvinios
Zdeněk Pavlátka:24.1.2015 11:05

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:24.1.2015 11:34

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

Nahoru Odpovědět
24.1.2015 11:34
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Zdeněk Pavlátka:24.1.2015 12:50

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:24.1.2015 15:11

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
https://www.facebook.com/peasantsandcastles/
Avatar
hanpari
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:24.1.2015 15:46

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
Odpovídá na hanpari
Zdeněk Pavlátka:24.1.2015 16:49

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
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:24.1.2015 17:52

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
Odpovídá na hanpari
Zdeněk Pavlátka:24.1.2015 18:03

Š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
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:24.1.2015 18:34

Ne to nemusis

 
Nahoru Odpovědět
24.1.2015 18:34
Avatar
hanpari
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:24.1.2015 18:49

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda:24.1.2015 19:18

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
Odpovídá na Lukáš Hruda
Zdeněk Pavlátka:24.1.2015 19:39

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda:24.1.2015 20:19

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
Odpovídá na Lukáš Hruda
Zdeněk Pavlátka:24.1.2015 20:21

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda:24.1.2015 20:40

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
24.1.2015 20:40
Avatar
hanpari
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
hanpari:24.1.2015 21:02

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
24.1.2015 21:02
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na hanpari
Lukáš Hruda:24.1.2015 21:11

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
24.1.2015 21:11
Avatar
coells
Tvůrce
Avatar
coells:24.1.2015 21:29
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
24.1.2015 21:29
Avatar
hanpari
Tvůrce
Avatar
Odpovídá na hanpari
hanpari:24.1.2015 21:37

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
Odpovídá na coells
Zdeněk Pavlátka:26.1.2015 8:59

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.