[Vektor Algebra] Surface Subdivision



  • Hi,
    ich habe ein 4-Eckiges, planares und konvexes (aber nicht quadratisches) Polygon im dreidimensionalen Raum, genauer gesagt habe ich dessen Eckpunkte gegeben. Nun möchte ich dieses Polygon in mehrere Polygone aufteilen. Zur verdeutlichung ein Bildchen in der Draufsicht aufs Polygon: http://img101.imageshack.us/img101/1811/problemkb.png
    Die grünen Punkte habe ich gegeben. Wie ich die roten Punkte ausrechne ist mir klar. Die hellblauen würde ich gerne ausrechnen, mir fehlen aber Momentan die Ideen wie.

    Kann mir jemand weiterhelfen?



  • Genauso, wie du die roten ausrechnest, nur dass du nicht die Strecke zwischen zwei gründen Punkten gleichmäßig aufteilst, sondern die Strecke zwischen zwei roten Punkten.



  • Danke, das sollte funktionieren 🙂
    (manchmal sieht man den Wald vor lauter Bäumen nicht)

    /Edit: Implementiert und funktioniert einwandfrei. Wenns wen interressiert hier der grobe Sourcecode:

    Vector3d *vOrigPoints = new Vector3d[iVerts];
    
    for( int i = 0; i < iVerts; i++ )
    {
    	int VertexCoordX = i % iVtxPerSide; // = column
    	int VertexCoordY = i / iVtxPerSide; // = row
    	float WeightX = ( 1.0f / (iVtxPerSide-1) ) * VertexCoordX; //ranges from 0 to 1 depending on Column
    	float WeightY = ( 1.0f / (iVtxPerSide-1) ) * VertexCoordY; //ranges from 0 to 1 depending on Row
    
    	//Calculate the original point of the vertex
    	Vector3d vLineStart = vCorners[0] + vEdgeY1 * WeightY;
    	Vector3d vLineEnd = vCorners[3] + vEdgeY2 * WeightY;
    	Vector3d vLine = vLineEnd - vLineStart;
    	Vector3d vOrigPoints[i] = vLineStart + vLine * WeightX;
    }
    

    Ich finds immer blöd wenn man per Google auf nen Thread trifft und dann steht keine anständige Lösung da.


Anmelden zum Antworten