示例#1
0
文件: game.cpp 项目: nelsonbss/rubiks
//----------------------------------------------------------------------
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

}
示例#2
0
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);
  }
}