3D graf ve VB.NET   zodpovězená otázka

VB.NET

Prosím o nasměrování...

Rád bych si vytvořil jednoduchou knihovnu, která na základě zadaných bodů (x,y,z) umí tyto zobrazit v trojrozměrném grafu. Jde pouze o vykreslení bodů, nikoliv o průběhy funkcí ve 3d. Graf bych pak podle potřeb rád natáčel tak, aby byl pohled na body názorný.

Potřeboval bych alespoň nasměrovat, co zkoušet, jaké prvky použít, abych to mohl integrovat do VB.NET formulářové aplikace. Případný odkaz na tutorial by rovněž potěšil.

Můžete mi prosím doporučit kudy se vydat a co nastudovat? Díval jsem se třeba na WPF, vypadá to zajímavě, ale je otázkou jestli jít s kanonem na vrabce :-)

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud chcete skutečně plnohodnotné 3D, použijte XNA. Ale pokud jste nikdy nepracoval s 3D grafikou, bude to těžký úkol.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nepotřebuji plnohodnotou 3D grafiku, neprogramuju hru, ale jednoduchou vizualizaci bodů v 3D prostoru. Takže mám pocit, že XNA je asi to, co jsem psal... kanon na vrabce.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud s tím chcete skutečně otáčet myší v prostoru, potom bude XNA méně pracné než vytvářet vlastní řešení, např. pomocí GDI+ (System.Drawing).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je možné to implementovat jak v GDI+, tak WPF. Něco takového zase nemusí být tak moc složité, ale chce to dobře ovládat alespoň goneometrii, práci s maticema a obecně záležitosti potřebné pro výpočet pozice 3D bodů při projekci na 2D plátno.

Ještě bych se zkusil podívat na komerční komponenty jako Telerik nebo DevExpress. Ale otázkou je, zda pokryjou, co potřebujete.

Začal bych například zde: http://en.wikipedia.org/wiki/3D_projecti...

Poznámka: K vykreslování grafu s fixním středem jde navíc celou věc trochu zjednoduši a pozice reprezentovat úhlem proti středu grafu a vzdáleností. Při otáčení pak jen relativně měníte úhel a s grafem lze otáčet.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, pro tvorbu grafů používám rád od knihovnu od MS System.Windows.Forms.DataVisualization.Charting, která má ve 3d stylu možnost nastavení úhlu pohledu v obou osách.

' Enable 3D charts
chart1.ChartAreas("Default").Area3DStyle.Enable3D = true

' Show a 30% perspective
chart1.ChartAreas("Default").Area3DStyle.Perspective = 30

' Set the X Angle to 30
chart1.ChartAreas("Default").Area3DStyle.Rotation = 30
        
' Set the Y Angle to 40
chart1.ChartAreas("Default").Area3DStyle.Rotation = 40
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tohle by se mi asi líbilo, jen se bojím, aby to nebylo to samé co umožňuje Excel... čili pro mně nepoužitelné.

Obecně mám množinu bodů o souřadnicích (x,y,z)>0. Co bych potřeboval je vykreslit základní podobu 3d grafu, tedy osy x,y,z a umístění bodů v nich při základním pohledu (čili při nějakém natočení osy z třeba o 45°, aby ten 3d prostor byl zřejmý). Pokud by to nestačilo, musel bych provést rotace buď primárně v ose z, eventuálně x a y. A to buď třeba posuvníky nebo uchopením objektu a tažením myší. Nevím však jak rychle by se graf překresloval, jestli by to fungovalo jaksi "online", nebo bych musel zadat parametry (natočení os) a pak kliknout na tlačítko přepočítat...

Ještě k poznámce pana Linharta, je mi jasné, že to je o výopočtech množin a transformacích ve 3d, ale to je mi vcelku jasné. Matematicky to chápu. Otázkou je, jaký programátorský nástroj zvolit, aby to nebylo příliš složité a výsledek byl uspojkojivý. Samozřejmě ve VB.NET s tím aspoň trochu dělám. To je celé :-)

V každém případě děkuji všem za náměty.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback