//---------------------------------------------------------------------- void game::extrudeObject(){ //create and use circle SG_POINT crCen = {0,0,0.0}; SG_VECTOR crNor; crNor.x = 0.0; crNor.y = 3.0; crNor.z = 0.0; sgSpaceMath::NormalVector(crNor); SG_CIRCLE crGeo; crGeo.FromCenterRadiusNormal( crCen, 150, crNor); sgCCircle* cr = sgCreateCircle(crGeo); ////extrude along vector SG_VECTOR extVec = {0,-300,0}; if (objectID == -1){ extrudedObject = (sgC3DObject*)sgKinematic::Extrude((const sgC2DObject&)(*cr),NULL,0,extVec,true); }else{ free(extrudedObject); extrudedObject = (sgC3DObject*)sgKinematic::Extrude((const sgC2DObject&)(*cr),NULL,0,extVec,true); } extrudedObject->SetAttribute(SG_OA_COLOR,30); extrudedB = true; sgDeleteObject(cr); //we have the sg3DObjcect to load loadObject(200,slicingPos,posP);//using id=200 }
void OnBnClickedPrCircles() { sgGetScene()->Clear(); for (double i=0.0;i<2.0*3.14159265;i+=0.4) { SG_POINT crCen = {5.0*cos(i),5.0*sin(i),0.0}; SG_VECTOR crNor; crNor.x = crCen.x - 0.0; crNor.y = crCen.y - 0.0; crNor.z = 0.0; sgSpaceMath::NormalVector(crNor); SG_CIRCLE crGeo; crGeo.FromCenterRadiusNormal(crCen, 1, crNor); sgCCircle* cr = sgCreateCircle(crGeo); sgGetScene()->AttachObject(cr); cr->SetAttribute(SG_OA_COLOR,((int)(10*i))%200+50); cr->SetAttribute(SG_OA_LINE_THICKNESS, ((int)(10*i))%5); cr->SetAttribute(SG_OA_LINE_TYPE, ((int)(10*i))%5); } }