Français
PHP, HTML & JavaScript- Forum

3D Grafik - WebGL avec three.js

 
- page 1 -



HofK
sur une appeler Tipp de IF hin, habe je mir la fois
three.js  [...]  angeschaut. là  [...]  (entier unten) qui ersten Resultate.
 
31.01.2016  
 



 
- page 30 -



HofK
Alle Ecken qui Dreiecke sommes im Pufferfeld qui Positionen gespeichert.
Somit peux on beliebige Längen berechnen, si on qui nécessaire Indizes hat.
g.indices = new Uint32Array( faceCount * 3 );
g.positions = new Float32Array( posCount * 3 );
//g.normals = new Float32Array( posCount * 3 );
g.setIndex( new THREE.BufferAttribute( g.indices, 1 ) );
g.setAttribute('position', new THREE.BufferAttribute( g.positions, 3 ) );

Aus verschiedenen Trouvé speichere je qui primären Positionen pour qui Löcher dans einem normalen array let pos = []; mittels pos.push( x, y, z ); entre.

avec cela berechnen sich qui Längen très simple. là qui Löcher aussi stärkere Krümmungen enthalten, habe Je l' Iterationsabbruch sur 90% qui ungefähren Seitenlänge qui Dreiecke gesetzt.
////////// console //////////////////////////////////////////////
let lx,ly,lz;
console.log('g.d', g.d ); //// rough side length of le triangles

for ( let i = 3; i < pos.length; i += 3 ) {//	uses sqlen0 < 0.81 * dd, equals 0.9*d

    lx = pos[ i     ] - pos[ i - 3 ];
    ly = pos[ i + 1 ] - pos[ i - 2 ];
    lz = pos[ i + 2 ] - pos[ i - 1 ];
    console.log('length',length( lx, ly, lz) ); // 0.9*d = 0.135

}

////////////////////////////////////////////////////////////////////

Pour cet kleine Löchlein ergeben sich folgende Werte.

 
11.11.2019  
 




p.specht

merci, cela gibt´s alors. Pour FEM etc. devrait on encore qui Richtungen savons. mais cela bleibt de toute façon Spezialisten überlassen. là dans qui representation seulement Flächen vorkommen, es là mais sur Trägheitsmomente, Massenverteilungen, Materialsteifigkeiten etc. ankommt, bleibt que voici Zukunftsmusik. était aussi seulement so une concept - je hatte la fois un 16bit-Programme pour FEM, cela pas mal était. Läuft naturellement pas plus.
Gruss
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
11.11.2019  
 




HofK
avec FEM (Finite-Elemente-Methode) habe je mich pas beschäftigt. là nécessaire on mais Teilkörperchen des Gesamtkörpers. mon "Körper" sommes seulement Oberflächen. qui Löcher erzeuge je pour qui Innengeometrie, siehe Beitrag vom 25.09. Ansonsten peux on qui zusammengesetzten Oberflächen simple par Überschneidung generieren.
 
12.11.2019  
 




HofK
qui bisher encore fehlenden Varianten Zylinder-Zylinder sommes soweit fertig.

un verbundenes Loch:





deux Löcher:





Knappe l'affaire:



eh bien et avec ca Fleißarbeit beim Aufräumen et optimaliser des Codes.
 
16.11.2019  
 




p.specht

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
16.11.2019  
 




HofK
HofK (16.11.2019)
eh bien et avec ca Fleißarbeit beim Aufräumen et optimaliser des Codes.


trop Euphorisch


avec qui Kugel am Zylinder ist es parfait.



mais beim weiteren Zusammenbau qui Körper habe je festgestellt, dass je chez den Enden qui Zylinder toujours seulement qui primitive variante avec teils verzerrten Seitenlängen qui Dreiecke habe.



alors doch encore un peu travail.



c'est encore pas entier parfait, qui iterative la facture bringt chez Loch et Zylinderende léger différent Ergebnisse. là muss je tiefer vérifier.

qui Formel ist aussi pas très übersichtlich:

Dabei doit qui Variablen à cause de qui situation qui Öffnung aussi encore vertauscht volonté. psi ist qui umlaufende Winkel, tilt ist qui Neigungswinkel, exc qui Exzentrik.
 
20.11.2019  
 




p.specht

Laufmasche, sozusagen ... comment wär´s avec einem Ausgleichsstück, überlagernd? Zuschweissen wird wohl plutôt pas gelingen
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
20.11.2019  
 




HofK
je hatte plutôt à kleben gedacht, mais cela verschmiert cela Display. Lötzinn serait wohl abperlen et schweißen wäre chez einem alten Röhrenmonitor sûrement un schönes Implosions-Experiment.

bon alors doch lieber meinen Soft-JavaScript-Tacker benutzen!

cela Problem liegt dans den léger unterschiedlichen Umsetzungen qui Iteration. là je es pour qui unterschiedlichen Fronten nacheinander experimentell ermittelt habe, gibt es feine Unterschiede im Algorithmus. Zur Optimierung des Codes muss cela de toute façon vereinheitlicht volonté, um ähnliche /identische Codeabschnitte pas mehrfach trop avons.

qui gegenwärtige Stand ergibt qui folgende allgemeine Funktion
function makeFrontPos( xyzCalc ).
cette wird qui konkrete Funktion pour qui Schnittlinie transfert
function xyzCalcSphHole( ) pour qui Kugel (Schnitt avec Zylinder).

Ausgangswerte volonté dans qui Triangulations-Hauptfunktion gesetzt um Parameterübergaben trop sparen. cela entspricht meiner Vorgehensweise beim Triangulationsprojekt.

Nätürlich anfangs wieder une belle Fehldarstellung. vous zeigt nochmals qui hohe Stabilität qui Triangulation chez fehlerhaften Fronten.



function makeFrontPos( xyzCalc ) {

    psi = psiStart;
    dpsi = Math.PI * 2 / g.detail / 16;
    sqlen1 = 9 * dd;// initial
    xyzCalc( );// start point
    pos.push( x, y, z );
    // notice start point
    x0 = x;
    y0 = y;
    z0 = z;

    si ( psi !== psiEnd ) {

        psi = psiEnd;
        xyzCalc( );
        psi = psiStart;// initial again

    }

    // notice endpoint to check finish
    x1 = x;
    y1 = y;
    z1 = z;

    tandis que ( sign > 0 ? psi < psiEnd && ( sqlen1 > 5.76 * dd || psi < ( psiEnd - psiStart ) / 2 ) : psi > psiEnd && ( sqlen1 > 5.76 * dd || psi > ( psiStart - psiEnd ) / 2 ) ) {

        // (adaptive-deformed) circle
        psi0 = psi;
        sqlen0 = 0;

        tandis que ( sqlen0 < 0.81 * dd ) {

            psi += sign * dpsi;
            xyzCalc( );
            dx = x - x0;
            dy = y - y0;
            dz = z - z0;
            sqlen0 = squareLength( dx, dy, dz );

        }

        pos.push( x, y, z );

        si ( slope ='dx' )	{

            dyzdx = Math.abs( Math.sqrt( dy * dy + dz * dz ) / dx );
            dyzdx = dyzdx > 1 ? 1 : dyzdx;
            dpsi = Math.abs( psi - psi0 ) * dyzdx / 16;

        } d'autre {// 'dy'

            dxzdy = Math.abs( Math.sqrt( dx * dx + dz * dz ) / dy );
            dxzdy = dxzdy > 1 ? 1 : dxzdy;
            dpsi = Math.abs( psi - psi0 ) * dxzdy / 16;

        }

        x0 = x;
        y0 = y;
        z0 = z;
        dx = x - x1;
        dy = y - y1;
        dz = z - z1;
        sqlen1 = squareLength( dx, dy, dz );

    }

    // possibly a intermediate point

    si( sqlen1 > 1.44 * dd )  {

        psi += ( psiEnd - psi ) / 2 ;
        /* or
        a = y1 === 0 ? 3 : 2;
        psi += a * ( psiEnd - psi ) / 4;
        */
        xyzCalc( );
        pos.push( x, y, z );

    }

    si( !openFrt ) pos.push( x1, y1, z1 );

}


// partial front:
// y = sqrt( rSph * rSph - g.radius * g.radius - exc * exc - 2 * g.radius * exc * cos( psi ) )
rex = rSph * rSph - g.radius * g.radius - exc * exc;
sign = 1;
psiStart = Math.PI;// initial
psiEnd = psiStart + Math.acos( rex / ( -2 * g.radius * exc ) );
openFrt = faux;
slope ='dy';
pos = [];
makeFrontPos( xyzCalcSphHole );


 
24.11.2019  
 




HofK
qui Ergänzung qui Fronten zur Anpassung de Zylinder et Kugel à qui Enden des Zylinders hat plus travail gemacht comme gedacht.

mais so sieht es entier praktikabel aus.





qui paramètre des Beispiels. Unten passt un Zylinder tour, dessus une Kugel.
const parameters =  {

    d: 0.15,// rough side length of le triangles
    div4: 15,// division of le quarter circle
    geoBtm:'cylinder', //  'cylinder', 'sphere', solid to être adapted
    bottom: -3.0,
    div4Btm: 34,// division bottom adaptation, (to quarter, >= div4)
    phiBtm: 0,// rotation of adaptive-deformed circle (Bottom)
    excBtm: 1.8049,
    //tiltBtm: 0.0, // tilt of bottom adaption ( -PI/2 < tilt < PI/2 )
    geoTop:'sphere', // 'sphere', solid to être adapted
    top: 1.0,
    div4Top: 34,// division top adaptation, (to quarter, >= div4)
    phiTop: 0,// rotation of adaptive-deformed circle (Top)
    excTop: 1.8049,
    //tiltTop: 0.0, // tilt of top adaption ( -PI/2 < tilt < PI/2 )
    holes: [
    // unit: '%' of le radius, 'd' factor to d, 'v' value
    //  hole to conect a sphere:  [ 'sphere', div4AdpSph, y, phi, exc, unit ]
    ['sphere', 16, -1.11, 0,  2.686, 'v' ],
    // hole to conect a cylinder: [ 'cylinder', div4AdpCyl, y, phi, exc, unit, tilt, <optional: side> ]
    ['cylinder', 8,  -2.2, 1.57, 50, '%', -0.22, '+-' ],
    //points hole,: array of points y, phi, ...  (charge point is connected to first)
    [ 0.15,0.45, 0.5,0.9, 0.8,0.6, 0.75,-0.2, 0.1,-0.15  ]
    ]

}


Es étions quelques Funktionen trop gestalten.



eh bien sommes encore "Restarbeiten" nötig. 
 
07.12.2019  
 




p.specht

Gratulation! cela était sûrement une grössere Hürde! maintenant wären wahrscheinlich quelque chose comme comment Makros hilfreich, qui qui Fälle unterscheiden aider - sonst bleibt es main-/Kopfarbeit. comment sieht es incidemment avec Bemaßung aus?
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
08.12.2019  
 




HofK
Bemaßungen sommes ne...aucune Problem, habe je mais pas vorgesehen. on zeichnet Linien et kleine Dreiecke comme Spitzen. qui Les chiffres peux on sur différent Weise erzeugen. Beispielsweise so, comment je es pour mon NumbersHelper gemacht habe, z.B.  [...] 

Zwischendurch habe je pour long Zeit wieder la fois shader betrachtet.  [...] 
et mir encore une autre l'affaire "eingehandelt" comme je sur une kleinen faute gestolpert suis.  [...] 
 
09.12.2019  
 




p.specht

Maßzahlen, qui pas mitdrehen: Wow, super!

comment pourrait on une Schnittebene dans cela objet poser, si seulement qui derrière elle-befindliche partie gezeichnet wird (z.B. Stockwerkspläne) ?
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
10.12.2019  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

357.569 Views

Untitledvor 0 min.
Paul Glatz vor 19 Tagen
Uwe ''Pascal'' Niemeier23.03.2025
Manfred Barei18.03.2025
R.Schneider05.03.2025
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie