Original article: http://www.lutanho.net/svgvml3d/index.html

SVG-VML-3D – DOKUMENTACE


Takže chcete používat SVG-VML-3D knihovna pro vaše vlastní projekty a potřebují nějakou dokumentaci? OK, jdeme na to:
Proveďte jeden z ukázkových souborů a používat ji jako šablonu. Základní kód, který budete vždy potřebovat, je následující:

/ / Init je volána funkce události onload manipulačním programem z html souboru
function init ()
{/ / Nejprve musíte objekt scény, toto je svět, který obsahuje všechny ostatní objekty
/ / Objekt Scene obsahuje všechny informace o světla, poloze pozorovatele, a tak dále
if (useSVG)
{/ / Musíme počkat, až se soubor scene.svg zcela naplněn pak SVGObjects [0] bude k dispozici
if (! SVGObjects [0]) / / Pokud máte více než jeden vložený scene.svg, pak můžete použít SVGObjects [n] (n = 0,1, …)
{SetTimeout (“Init ()”, 100); / / Pokud scene.svg není vložen zkuste znovu 0,1 sekundy
návrat;
}
S = new Scene3D (SVGObjects [0], 0500500) / / používat stejný n pro SVGObjects [n] zde
}
jinak S = new Scene3D (document.getElementById (“Scene1”), 1);

/ / Nyní můžete přidávat objekty, které chcete zobrazit na scénu a následně udělat nějaké manipulace se
/ / Velikost objekty a přesunout je od počátku souřadného systému do polohy, kterou chcete:
T = new čtyřstěn (S, “# 0080ff”, “# 0000FF”, “# 000000”, 1);
T.Shift (1,1,1);
O = new Octahedron (S, “# 0080ff”, “# 0000FF”, “# 000000”, 1);
O.Zoom (1.4);
O.Shift (-1,1, -1);
C = new Cube (S, “# 0080ff”, “# 0000FF”, “# 000000”, 1);
C.Zoom (0.9);
C.Shift (1, -1, -1);
I = new Icosahedron (S, “# 0080ff”, “# 0000FF”, “# 000000”, 1);
I.Shift (-1, -1,1);
D = new Dodecahedron (S, “# 0080ff”, “# 0000FF”, “# 000000”, 1);

/ / Přidat Id a události onClick akce na čtyřstěnu
D.SetId (“myDodedahedron”);
D.SetEventAction (“click”, parent.ClickMsg);
/ / Použití D.SetEventAction (“click”, “”); odstranit událost onclick akci později
/ / Všechny objekty musí sdílet stejnou funkci událostí akci (v tomto případě funkce ClickMsg na událost onclick)

/ / Nakonec, když jsou všechny objekty přidány do scény, musíme rozpoznat hranice boxu, který zahrnuje všechny objekty:
S.AutoCenter ();
/ / Toto zjistí střed scény (což je střed pole), a také stanoví vzdálenost pozorovatele
/ / A anděl ohledem na rozumných hodnotách

/ / I když všechny objekty jsou umístěny kolem počátku souřadného systému, normálně centrum vypočítá
/ / AutoCenter () nebude být přesně původ souřadného systému. Pokud později chcete otočit objekty
/ / Kolem počátku souřadného systému, pak také centrem scény by tam měla být, můžete to udělat s
S.Center.Zoom (0.0);

/ / S následujícími můžete přiblížit a oddálit celou scénu na obrazovce
S.ZoomAll * = 1,4;

/ / Prohlížeč (= pozorovatel) a světlo jsou umístěny na kouli, která se vztahuje na scénu. Střed scény je
/ / Také centrem oblasti. Můžete změnit pozici o ChangeViewer (dΘ, dΦ) a ChangeLight (dΘ, dΦ)
/ / DΘ jde na sever / jih (-90 … +90) a dΦ jde na východ / západ (0-360).
S.ChangeViewer (-15,0);
S.ChangeLight (-20, -30);

/ / Ke zjištění správného pořadí, ve kterém se objekty na scéně je možné odvodit použijte následující
S.Sort ();

/ / Nyní jsme připraveni čerpat všechny objekty na scéně
S.Draw ();
}
/ / Funkce je volána při kliknutí na dvanáctistěn
Funkce ClickMsg (EVT)
{If (EVT) alert (“kliknete na” + evt.target.id + “.”) / / SVG
jiný alert (“kliknete na” + this.id + “.”) / / VML
}

Nakonec přidejte následující kód do vašeho html dokumentu. Jedná se o plátno, kde bude scéna vypracovány.

“”>if (useSVG) document.writeln (“<embed width=’500′ height=’500′ name=’Scene1′ src=’scene.svg’ wmode=’transparent’ type=’image/svg+xml’ />” );
“);”>jiný document.writeln (“<div id=’Scene1′ style=’position: relative; width:500; height:500; overflow: hidden;’> </ div>”);

Toto je poněkud podrobnější odkaz na dostupných objektů s jejich vlastnosti a metody, které mohou být použity.

Objekt Vector
Objekt Vector se používá pro zjednodušení skladování a manipulaci s daty. To je často používáno pro vlastnosti jiných objektů, které se skládá ze 3 složek, například vlastnosti Center, Zoom, OrderWeight, Viewer a Světlo Scene3D objektu a vlastnosti Scale, Label a GridDelta objektu BoundingBox.
v = new Vector (x, y, z) / / je to konstruktor, všimněte si, že x, y a z běžně jsou čísla, ale může být také řetězce
v.Add (w) / / přidá vektor w do v
v.Zoom (f) / / násobí komponenty V se skalárním f

Objekt Scene3D
S = new Scene3D (ParentObject, zIndex, šířka, výška);
To je konstruktor. Pokud ParentObject používá více než jedné scéně, pak scény jsou vypracovány s ohledem na jejich zIndex. ZIndex druhého scény by měla být větší než 3 + počet polygonů všechny objekty, které jsou obsaženy v první scéně.
Můžete změnit následující vlastnosti:
S.Center / / je to vektor, použití S.Center.Zoom (0); nastavit na počátku souřadného systému
S.Zoom / / je to vektor, se používá pro transformaci z fyzického prostoru do metrického prostoru, je-li toto nastavení změnit po Poly3D objekty byly vytvořeny, pak musíte také volat S.ZoomUpdate ();
S.OrderWeight / / je to vektor, můžete nastavit hodnoty dosáhnout lepších výsledků v pořadí kreslení polygonů, další podrobnosti jsou uvedeny na konci tohoto dokumentu
S.ZoomAll / / to je skalární, to zvětší obraz na obrazovce
S.ShiftX / / to je skalární, se posouvá obraz na obrazovce ve směru x
S.ShiftY / / to je skalární, se posouvá obraz na obrazovce ve směru Y
S.Dist / / to je skalární, to představuje vzdálenost diváka (= pozorovatel) od středu scény
S.DiffuseLight / / to musí být skalární mezi 0 a 1
Můžete použít následující metody:
S.AutoCenter () / / tato vypočítá střed scény a nastaví pro vzdálenost diváka a anděl výhledem do rozumných hodnot
S.ChangeViewer (dTheta, dPhi) / / to změní postoj diváka
S.ChangeLight (dTheta, dPhi) / / to změní postoj světlo
S.ScreenPos (v) / / to počítá a vrací vektor v souřadnicích obrazovky z vektoru v metrickém prostoru
S.Sort () / / to spočítá pořadí kreslení polygonů, musíte to přepočítat předtím výkresu, pokud jste změnili pozici diváka, nebo pokud jste se přestěhovali objekt ve scéně
S.Draw () / / to kreslí scénu
S.ZoomUpdate () / / to přepočítá metrických souřadnic polygonů na scéně, musíte použít, pokud jste změnili S.Zoom a pokud již existují objekty ve scéně součástí
S.Delete (); / / Toto odstraní všechny objekty ze scény, musíte zavolat Init ();, než budete moci přidat nové objekty do scény
S.Init () / / použít poté, co jste odstranili všechny objekty ze scény dříve, než přidáte nový objekt

Objekt Poly3D
Poly3D objekt je základní objekt, který lze vyvodit. Všechny ostatní objekty, jako jsou kostky, čtyřstěnu a tak dále, jsou vyrobeny tím, že spolu Poly3D objektů.
P = new Poly3D (ParentScene, FrontColor, BackColor, StrokeColor, StrokeWeight) / / je to konstruktor
P.AddPoint (x, y, z), / / ​​přidá vrchol na polygonu
P.Update () / / volání to po přidání poslední vrchol, to aktualizuje středisko a normální vektor polygonu
P.SetPoint (i, x, y, z) / / změny souřadnic polygonu je vrchol s indexem i, volání P.Update (), po výměně jednoho nebo více bodů
P.Zoom (f); / / přiblíží všechny souřadnice polygonu pomocí reálné číslo f,
P.Shift (x, y, z) / / posune polygon
Při zkoumání souborů svgvml3d.js si všimnete, že objekt má 2 Poly3D seznamy poins, jeden s názvem PhPoint a jeden s názvem Point. PhPoint je seznam míst ve fyzických rozměrech. Takové místo je například (1 m, 10 kg, 3 roky). Point List je seznam odpovídajících bodů v metrickém prostoru, jako je například bod (1, 1, 1).

Objekt Box3D
Tento objekt se skládá z 6 Poly3D objektů. Při definování vlastních objektů, můžete použít kód tohoto objektu (v souboru svgvml3d.js) jako příklad.
O = new Box3D (ParentScene, X0, Y0, Z0, X1, Y1, Z1, FrontColor, BackColor, StrokeColor, StrokeWeight) / / je to konstruktor
Všimněte si, že za normálních okolností BackColor nebude vidět, protože to je barva, která je ve vnitřním prostoru krabice 😉
Následující metody dělat jen to, co slibují:
O.Zoom (f);
O.Shift (x, y, z);
O.SetFrontColor (FrontColor);
O.SetBackColor (Barvapozadí);
O.SetStrokeColor (StrokeColor);
O.SetStrokeWeight (StrokeWeight);
O.SetVisibility (IsVisible);
O.RotateX (úhel, střed);
O.RotateY (úhel, střed);
O.RotateZ (úhel, střed);
O.SetPosition (X0, Y0, Z0, X1, Y1, Z1);
O.SetId (Id);
O.SetEventAction (Event CallbackFunction);
K otáčení metody objekt otočit kolem vektoru, který míří ve směru X-, Y-a Z-osy. Pokud Center = 0, pak střed otáčení je původ souřadného systému. Pokud Center = 1, pak střed otáčení je střed tohoto objektu. Pokud Center je jiná hodnota, pak střed otáčení je někde na trati, která prochází počátkem souřadného systému a středem objektu.

Objekt BoundingBox
Tento objekt je napůl otevřený box s mřížkami a stupnic a mohou být použity pro čerpání 3D tabulek a grafů. Tento objekt bude vždy první být vypracován, takže všechny ostatní objekty by měly být v hranicích ohraničovacího rámečku. Každá scéna může obsahovat pouze jeden ohraničovací rámeček.
B = new BoundingBox (ParentScene, FillColor, StrokeColor) / / je to konstruktor
B.SetBorder (xmin, ymin, zmin, xmax, ymax, zmax) / / to musí být volána před vypracováním
Před sestavením můžete nastavit následující vlastnosti:
B.Scale / / je to vektor, pro komponenty použít 0 = bez stupnice, 1 = numerická (výchozí), 2, 3, … = Datum / čas, string = numerická + jednotka
“Funkce FunctionName” = FunctionName (ScaleValue);
Například = “%” B.Scale.x, mohou být použity pro osa x 10% 20% 30% …
B.Label / / je to vektor, výchozí štítky “X”, “Y” a “Z”, chcete-li žádné etikety, ale rozsah hodnot, pak použijte “”
B.GridDelta / / to je vektor mřížky doby, kdy je componenet je 0 (default), pak to bude detekován automaticky
B.FillColor / / toto je řetězec představující barvu
B.StrokeColor / / toto je řetězec představující barvu
B.StrokeWeight / / toto je celočíselná hodnota

Objektové CoordSys
Musím vás varovat. Tento objekt se používá pouze odborníci. Podívejte se na zdrojový kód souboru coordsys_test.html. Máte-li pochopit, co to dělá, pak jste expert, pokud ne, pak nejste.
C = new CoordSys (ParentScene, StrokeColor) / / je to konstruktor
Objektové CoordSys budou většinou používat neviditelný. Je to jako malé souřadnicovém systému, který může být nalepen na jiný objekt a když je tento objekt posunut a otočit několikrát, stále můžete změnit vektor z souřadnic scény do souřadnic otočený objektu. Kouzlo funkce, která to je
C.TransformCoord (v), / / ​​v je vektor
Další dostupné metody jsou
C.Zoom (f);
C.Shift (x, y, z);
C.SetVisibility (IsVisible);
C.RotateX (úhel, střed);
C.RotateY (úhel, střed);
C.RotateZ (úhel, střed);
C.SetId (Id);
C.SetEventAction (Event CallbackFunction);
Vlastnosti, které můžete změnit, jsou
C.StrokeColor
C.StrokeWeight

Nastavení S.OrderWeight
Skript používá algoritmus malíři kreslit objekty. To znamená, že je objekt, který je nejvíce daleko od pozorovatele vypracován první objekt, který je nejblíže k pozorovateli je koncipován jako poslední. Ve většině případů je obraz scény bude správné. Nicméně, v některých případech překrývání objektů se může mýlit. Chcete-li získat lepší výsledky, že je vlastnost OrderWeight které lze nastavit před voláním metody sort (). Objekty jsou řazeny jako jejich pozice se (x * OrderWeight.x, y * OrderWeight.y, z * OrderWeight.z) místo (x, y, z). To znamená, že můžete prakticky protáhnout objekty před výpočtem pořadí, ve kterém musí být vypracovány.

v první scéně.
Můžete změnit následující vlastnosti:
S.Center / / je to vektor, použití S.Center.Zoom (0); nastavit na počátku souřadného systému
S.Zoom / / je to vektor, se používá pro transformaci z fyzického prostoru do metrického prostoru, je-li toto nastavení změnit po Poly3D objekty byly vytvořeny, pak musíte také volat S.ZoomUpdate ();
S.OrderWeight / / je to vektor, můžete nastavit hodnoty dosáhnout lepších výsledků v pořadí kreslení polygonů, další podrobnosti jsou uvedeny na konci tohoto dokumentu
S.ZoomAll / / to je skalární, to zvětší obraz na obrazovce
S.ShiftX / / to je skalární, se posouvá obraz na obrazovce ve směru x
S.ShiftY / / to je skalární, se posouvá obraz na obrazovce ve směru Y
S.Dist / / to je skalární, to představuje vzdálenost diváka (= pozorovatel) od středu scény
S.DiffuseLight / / to musí být skalární mezi 0 a 1
Můžete použít následující metody:
S.AutoCenter () / / tato vypočítá střed scény a nastaví pro vzdálenost diváka a anděl výhledem do rozumných hodnot
S.ChangeViewer (dTheta, dPhi) / / to změní postoj diváka
S.ChangeLight (dTheta, dPhi) / / to změní postoj světlo
S.ScreenPos (v) / / to počítá a vrací vektor v souřadnicích obrazovky z vektoru v metrickém prostoru
S.Sort () / / to spočítá pořadí kreslení polygonů, musíte to přepočítat předtím výkresu, pokud jste změnili pozici diváka, nebo pokud jste se přestěhovali objekt ve scéně
S.Draw () / / to kreslí scénu
S.ZoomUpdate () / / to přepočítá metrických souřadnic polygonů na scéně, musíte použít, pokud jste změnili S.Zoom a pokud již existují objekty ve scéně součástí
S.Delete (); / / Toto odstraní všechny objekty ze scény, musíte zavolat Init ();, než budete moci přidat nové objekty do scény
S.Init () / / použít poté, co jste odstranili všechny objekty ze scény dříve, než přidáte nový objekt

Objekt Poly3D
Poly3D objekt je základní objekt, který lze vyvodit. Všechny ostatní objekty, jako jsou kostky, čtyřstěnu a tak dále, jsou vyrobeny tím, že spolu Poly3D objektů.
P = new Poly3D (ParentScene, FrontColor, BackColor, StrokeColor, StrokeWeight) / / je to konstruktor
P.AddPoint (x, y, z), / / ​​přidá vrchol na polygonu
P.Update () / / volání to po přidání poslední vrchol, to aktualizuje středisko a normální vektor polygonu
P.SetPoint (i, x, y, z) / / změny souřadnic polygonu je vrchol s indexem i, volání P.Update (), po výměně jednoho nebo více bodů
P.Zoom (f); / / přiblíží všechny souřadnice polygonu pomocí reálné číslo f,
P.Shift (x, y, z) / / posune polygon
Při zkoumání souborů svgvml3d.js si všimnete, že objekt má 2 Poly3D seznamy poins, jeden s názvem PhPoint a jeden s názvem Point. PhPoint je seznam míst ve fyzických rozměrech. Takové místo je například (1 m, 10 kg, 3 roky). Point List je seznam odpovídajících bodů v metrickém prostoru, jako je například bod (1, 1, 1).

Objekt Box3D
Tento objekt se skládá z 6 Poly3D objektů. Při definování vlastních objektů, můžete použít kód tohoto objektu (v souboru svgvml3d.js) jako příklad.
O = new Box3D (ParentScene, X0, Y0, Z0, X1, Y1, Z1, FrontColor, BackColor, StrokeColor, StrokeWeight) / / je to konstruktor
Všimněte si, že za normálních okolností BackColor nebude vidět, protože to je barva, která je ve vnitřním prostoru krabice 😉
Následující metody dělat jen to, co slibují:
O.Zoom (f);
O.Shift (x, y, z);
O.SetFrontColor (FrontColor);
O.SetBackColor (Barvapozadí);
O.SetStrokeColor (StrokeColor);
O.SetStrokeWeight (StrokeWeight);
O.SetVisibility (IsVisible);
O.RotateX (úhel, střed);
O.RotateY (úhel, střed);
O.RotateZ (úhel, střed);
O.SetPosition (X0, Y0, Z0, X1, Y1, Z1);
O.SetId (Id);
O.SetEventAction (Event CallbackFunction);
K otáčení metody objekt otočit kolem vektoru, který míří ve směru X-, Y-a Z-osy. Pokud Center = 0, pak střed otáčení je původ souřadného systému. Pokud Center = 1, pak střed otáčení je střed tohoto objektu. Pokud Center je jiná hodnota, pak střed otáčení je někde na trati, která prochází počátkem souřadného systému a středem objektu.

Objekt BoundingBox
Tento objekt je napůl otevřený box s mřížkami a stupnic a mohou být použity pro čerpání 3D tabulek a grafů. Tento objekt bude vždy první být vypracován, takže všechny ostatní objekty by měly být v hranicích ohraničovacího rámečku. Každá scéna může obsahovat pouze jeden ohraničovací rámeček.
B = new BoundingBox (ParentScene, FillColor, StrokeColor) / / je to konstruktor
B.SetBorder (xmin, ymin, zmin, xmax, ymax, zmax) / / to musí být volána před vypracováním
Před sestavením můžete nastavit následující vlastnosti:
B.Scale / / je to vektor, pro komponenty použít 0 = bez stupnice, 1 = numerická (výchozí), 2, 3, … = Datum / čas, string = numerická + jednotka
“Funkce FunctionName” = FunctionName (ScaleValue);
Například = “%” B.Scale.x, mohou být použity pro osa x 10% 20% 30% …
B.Label / / je to vektor, výchozí štítky “X”, “Y” a “Z”, chcete-li žádné etikety, ale rozsah hodnot, pak použijte “”
B.GridDelta / / to je vektor mřížky doby, kdy je componenet je 0 (default), pak to bude detekován automaticky
B.FillColor / / toto je řetězec představující barvu
B.StrokeColor / / toto je řetězec představující barvu
B.StrokeWeight / / toto je celočíselná hodnota

Objektové CoordSys
Musím vás varovat. Tento objekt se používá pouze odborníci. Podívejte se na zdrojový kód souboru coordsys_test.html. Máte-li pochopit, co to dělá, pak jste expert, pokud ne, pak nejste.
C = new CoordSys (ParentScene, StrokeColor) / / je to konstruktor
Objektové CoordSys budou většinou používat neviditelný. Je to jako malé souřadnicovém systému, který může být nalepen na jiný objekt a když je tento objekt posunut a otočit několikrát, stále můžete změnit vektor z souřadnic scény do souřadnic otočený objektu. Kouzlo funkce, která to je
C.TransformCoord (v), / / ​​v je vektor
Další dostupné metody jsou
C.Zoom (f);
C.Shift (x, y, z);
C.SetVisibility (IsVisible);
C.RotateX (úhel, střed);
C.RotateY (úhel, střed);
C.RotateZ (úhel, střed);
C.SetId (Id);
C.SetEventAction (Event CallbackFunction);
Vlastnosti, které můžete změnit, jsou
C.StrokeColor
C.StrokeWeight

Nastavení S.OrderWeight
Skript používá algoritmus malíři kreslit objekty. To znamená, že je objekt, který je nejvíce daleko od pozorovatele vypracován první objekt, který je nejblíže k pozorovateli je koncipován jako poslední. Ve většině případů je obraz scény bude správné. Nicméně, v některých případech překrývání objektů se může mýlit. Chcete-li získat lepší výsledky, že je vlastnost OrderWeight které lze nastavit před voláním metody sort (). Objekty jsou řazeny jako jejich pozice se (x * OrderWeight.x, y * OrderWeight.y, z * OrderWeight.z) místo (x, y, z). To znamená, že můžete prakticky protáhnout objekty před výpočtem pořadí, ve kterém musí být vypracovány.