Anatomi av en 3D tryckt Turk's head (2 / 5 steg)
Steg 2: 3D curve
Nu måste vi ta Knut rutnätet och förvandla det till 3D-kurvor. Låt oss börja genom att tilldela en lokal koordinatmodell för vår Knut rutnät.
Så nu har vi en (u, v) koordinaten för varje punkt i vårt nät. Tänk på att Knut sveper runt, så en u 0 kommer att vara samma som ett u 1.
Nu, låt oss definiera en cylinder med diametern D och höjden H:
Om vi in z-axeln till den huvudsakliga axeln i cylindern och sätta ursprung i mitten av cylindern, vi kan kartlägga våra (u, v) koordinater till en 3D punkt med följande ekvationer:
x = D/2*cos(360*u)
y = D/2*sin(360*u)
z = H/2 *(1-v) + H/2 * v
Nu vi gå igenom vårt nät, som vi gjorde i det första steget och släppa en 3D punkt vid varje punkt i rutnätet med ovanstående ekvationer. Vi kan sedan ansluta punkterna som en kurva med Catmull-Rom interpolation. Observera att i bilden under H var inställd på ett lägre värde än faktiska höjden på cylindern, varför kurvan inte går hela vägen till toppen och botten.
Nu måste vi kompensera punkterna till svars för när vi ger tjocklek till kurvan som overs och unders. Vi måste kompensera punkterna utåt från cylindern på varje punkt i rutnätet. För att beräkna riktningen måste vi kompensera använder vi ekvationer mycket likt ovan, utom z kommer alltid vara 0 och D är irrelevent som vi vill ha en enhet längd vektor:
NX = cos(360*u);
Ny = sin(360*u);
NZ = 0;
Efter avräkning kurvan får vi följande: