/* *********************************************************************** * * * Toroid Database Generator * * * * Program by * * Christopher D. Watkins * * * * 'C' conversion by * * Larry Sharp * * * *********************************************************************** */ #include "stdio.h" #include "dos.h" #include "conio.h" #include "math.h" #include "string.h" #include "alloc.h" #include "math.inc" #include "graph.inc" #include "model.inc" #include "shpmk.inc" int Theta, DTheta, HalfDTheta; int Phi, DPhi, HalfDPhi; int HorzLoop, VertLoop; void SetupToroid(int Horizontal, int Vertical) { VertexNum=1; VertexNumInFacet=1; HorzLoop=Horizontal; VertLoop=Vertical; LastFacet=HorzLoop*VertLoop; LastVertexNumInFacet=MaxVertexNumInFacet; LastVertex=LastFacet*LastVertexNumInFacet; DTheta=360/HorzLoop; HalfDTheta=DTheta/2; Theta=HalfDTheta+45+45; DPhi=360/VertLoop; HalfDPhi=DPhi/2; Phi=HalfDPhi; } void MakeToroidDatabase(float Rho, float R) { float CosThetaMinus, SinThetaMinus; float CosThetaPlus, SinThetaPlus; float RCosPhiMinus, RSinPhiMinus; float RCosPhiPlus, RSinPhiPlus; float x, y, z; FacetNum=0; do { Phi=HalfDPhi; CosThetaMinus=CosD(Theta-HalfDTheta); SinThetaMinus=SinD(Theta-HalfDTheta); CosThetaPlus=CosD(Theta+HalfDTheta); SinThetaPlus=SinD(Theta+HalfDTheta); do { RCosPhiMinus=R*CosD(Phi-HalfDPhi); RSinPhiMinus=R*SinD(Phi-HalfDPhi); RCosPhiPlus=R*CosD(Phi+HalfDPhi); RSinPhiPlus=R*SinD(Phi+HalfDPhi); ++FacetNum; x=(Rho+RCosPhiMinus)*CosThetaMinus; y=(Rho+RCosPhiMinus)*SinThetaMinus; z=RSinPhiMinus; AddVertex(x, y, z); x=(Rho+RCosPhiMinus)*CosThetaPlus; y=(Rho+RCosPhiMinus)*SinThetaPlus; z=RSinPhiMinus; AddVertex(x, y, z); x=(Rho+RCosPhiPlus)*CosThetaPlus; y=(Rho+RCosPhiPlus)*SinThetaPlus; z=RSinPhiPlus; AddVertex(x, y, z); x=(Rho+RCosPhiPlus)*CosThetaMinus; y=(Rho+RCosPhiPlus)*SinThetaMinus; z=RSinPhiPlus; AddVertex(x, y, z); VertexNumInFacet=1; Phi+=DPhi; } while(Phi<360+HalfDPhi); Theta+=DTheta; } while(Theta<360+HalfDTheta+90); } /* *********************************************************************** * * * Main Program * * * *********************************************************************** */ void main() { Facet=farcalloc(((MaxFacet+1)*(MaxVertexNumInFacet+1)), sizeof(int)); InitVertexMaker(); SetupToroid(60, 60); MakeToroidDatabase(0.75, 0.25); SaveData("TOROID.DAT"); ExitGraphics(); farfree(Facet); }