objectarx向量的用法

求一圆的外切正方形的四个顶点坐标。

 // cad x轴正方向为零度方向,逆时针为正

// centerPt为圆心坐标,radius为圆的半径,angle为正方形的第一个点的偏移角度

AcGePoint3dArray GetCalculateVertexZfx(const AcGePoint3d& centerPt, double radius,double angle)
{

	AcGePoint3d ptA;
	ptA.x = centerPt.x + radius*sqrt((double)2) * cos(angle);
	ptA.y = centerPt.y + radius*sqrt((double)2) * sin(angle);
	ptA.z = centerPt.z;

	AcGeVector3d vec(centerPt.x-ptA.x, centerPt.y-ptA.y, 0);

	 单位向量
	AcGeVector3d unitVec = vec.normalize();

	 绕Z轴旋转
	// 以单位向量为基准,先偏移至最近计算的边
	// 求出一条边后,继续偏移,计算另一条
	unitVec.rotateBy( 45*PI/180, AcGeVector3d::kZAxis);


	 B点坐标 = A点坐标 + AB间的向量 
	AcGePoint3d ptB;
	ptB = ptA + unitVec*2*radius;

	//C点坐标是和A点对称的,可以通过圆心算
	AcGePoint3d ptC;

	ptC.x = centerPt.x - radius*sqrt((double)2) * cos(angle);
	ptC.y = centerPt.y - radius*sqrt((double)2) * sin(angle);
	ptC.z = centerPt.z;

	//D点坐标可以通过向量 AB来旋转计算
	AcG
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值