当前位置: 首页 > news >正文

无忧网站重庆市建设安全监督站的网站

无忧网站,重庆市建设安全监督站的网站,云南小程序开发哪家好,云南免费网站建设原理解析几何通用解法#xff1a; 在空间中两条线上最短距离处的点连垂直于两条线L1、L2 算法描述#xff1a;设两条无限长度直线s、t,起点为s0、t0#xff0c;方向向量为u、v 1、最短直线两点#xff1a;在s上为s0 sc*u#xff0c;在t上的为t0 tc*v 2、…原理解析几何通用解法     在空间中两条线上最短距离处的点连垂直于两条线L1、L2     算法描述设两条无限长度直线s、t,起点为s0、t0方向向量为u、v     1、最短直线两点在s上为s0 sc*u在t上的为t0 tc*v     2、记向量w为(s0sc*u) - (t0tc*v),记向量w0 s0 - t0         记a u*ub u*vc v*vd u*w0e v*w0     公式(a);         w向量与两线段分别垂直时最短所存在 u*w 0,v*w 0   公式(b);          由于u*w 0、v*w 0将w -tc*v w0 sc*u 带入公式(b)得         (u*u)*sc - (u*v)*tc -u*w0  (公式2)         (v*u)*sc - (v*v)*tc -v*w0  (公式3)     3、再将前式(a)带入可得sc(be-cd)/(ac-b²)、tc(ae-bd)/(ac-b²)  公式(c)         注意到ac-b2|u|²|v|²-(|u||v|cosQ)²(|u||v|sinQ)²不小于0         所以可以根据公式(c)判断sc、tc符号和sc、tc与1的关系即可分辨最近点是否在线段内     4、当ac-b20时(公式2)(公式3)独立表示两条直线平行。可令sc0单独解出tc     5、最短距离最终就是w向量的模长 function CalcuateDistance() {/**计算空间两条直线之间的最短距离 */getShortDistance (firstLineData:any, secondLineData:any) {/**第一条线段对应起终点的坐标 */var x1 firstLineData.startX;var y1 firstLineData.startY;var z1 firstLineData.startZ;var x2 firstLineData.endX;var y2 firstLineData.endY;var z2 firstLineData.endZ;/**第二条线段对应起终点的坐标*/var x3 secondLineData.startX;var y3 secondLineData.startY;var z3 secondLineData.startZ;var x4 secondLineData.endX;var y4 secondLineData.endY;var z4 secondLineData.endZ;var ux x2 - x1;var uy y2 - y1;var uz z2 - z1;var vx x4 - x3;var vy y4 - y3;var vz z4 - z3;var wx x1 - x3;var wy y1 - y3;var wz z1 - z3;/**根据公式(a)计算出对应的数值 */var a (ux * ux uy * uy uz * uz); //u*uvar b (ux * vx uy * vy uz * vz); //u*vvar c (vx * vx vy * vy vz * vz); //v*vvar d (ux * wx uy * wy uz * wz); //u*w var e (vx * wx vy * wy vz * wz); //v*wvar dt a * c - b * b;var sd dt;var td dt;/**sn be - cd */var sn 0.0;/**tn ae - bd */var tn 0.0;if (CalcuateDistance.IsEqual(dt, 0.0)) {/**若dt为0,这说明两条线重合或者平行三角函数的相关知识 */sn 0.0; //在s上指定取s0sd 1.00; //防止计算时除0错误tn Math.E; //按(公式3)求tctd c;} else {sn (b * e - c * d);tn (a * e - b * d);if (sn 0.0) {sn 0.0;tn e;td c;} else if (sn sd) {//最近点在s终点以外(即sc1,则取sc1)sn sd;tn Math.E b; //按(公式3)计算td c;}};if (tn 0.0) {//最近点在t起点以外tn 0.0;if (-d 0.0) //按(公式2)计算如果等号右边小于0则sc也小于零取sc0sn 0.0;else if (-d a) //按(公式2)计算如果sc大于1取sc1sn sd;else {sn -d;sd a;}} else if (tn td) {tn td;if ((-d b) 0.0)sn 0.0;else if ((-d b) a)sn sd;else {sn (-d b);sd a;}};var sc 0.0;var tc 0.0;if (CalcuateDistance.IsEqual(sn, 0.0))sc 0.0;elsesc sn / sd;if (CalcuateDistance.IsEqual(tn, 0.0))tc 0.0;elsetc tn / td;/**最终计算W向量的模长即为空间两条线段的最短距离 */var dx wx (sc * ux) - (tc * vx);var dy wy (sc * uy) - (tc * vy);var dz wz (sc * uz) - (tc * vz);var MinDis Math.sqrt(dx * dx dy * dy dz * dz);var distance MinDis.toFixed(3);/**两条管线相聚最近上面的点坐标 */let minPoint1X x1 (sc * ux);let minPoint1Y y1 (sc * uy);let minPoint1Z z1 (sc * uz);let minPoint2X x3 (tc * vx);let minPoint2Y y3 (tc * vy);let minPoint2Z z3 (tc * vz);let obj {distance:distance,point1:{x:minPoint1X,y:minPoint1Y,z:Number(minPoint1Z.toFixed(3))},point2:{x:minPoint2X,y:minPoint2Y,z:Number(minPoint2Z.toFixed(3))},}return obj;},/*** description 判断是否相等* param d1 * param d2 * returns */IsEqual(d1:number, d2:number):boolean {if (Math.abs(d1 - d2) Math.pow(10, -7)) {return true;} else {return false;}} }
http://www.pierceye.com/news/197508/

相关文章:

  • 芜湖做网站需要多少钱青岛网站建设公司怎么选
  • 塑胶 东莞网站建设企业网络推广培训
  • wordpress五分钟建站手机网站 cms
  • 网站前台后台河南省建设工程质量协会网站
  • wordpress无法拖动小工具长沙seo网站推广
  • 网站的推广方案的内容有哪些网站建设所需技术
  • 手机微网站怎么制作的威特视频网站建设方案
  • 视频播放网站开发的报告潮州网站网站建设
  • 如何查询网站域名备案建设网站找什么问题
  • 南开大学 网站开发技术 刘冲网站排名优化有哪些牛霸天的软件1
  • 高品质网站设计北京市地铁建设管理公司网站
  • 初次建设网站的技巧织梦做分类信息网站
  • 宣讲家网站官网加强作风建设网站业务怎么做的
  • 厚街网站建设价格做办公室的网站
  • 青海做网站找谁wordpress gif缩略图
  • 手机网站全屏显示如何把自己做的网站放到微信上
  • 网站建设云雅淇wordpress
  • 工作室网站需要备案吗python基础教程编程题
  • 建设工程人才招聘信息网站响应式网站 cms
  • 设计签名免费网站福州的网站建设
  • 太原这边有做网站的吗wordpress实现pdf浏览
  • 制作微信公众号的网站开发30岁做网站运营
  • 松江手机网站开发正规免费代理
  • 太原市建设路小学网站昆山住房与城乡建设局网站
  • 石家庄的网站的公司计算机应用技术专业网站开发方向
  • 网站优化软件排行榜八年级微机网站怎么做
  • 织梦网站漏洞cms网站开发流程
  • 网站开发规划书怎么写企业cms开源
  • html网站免费下载海珠区建网站
  • 石家庄住房城乡建设厅网站宿迁网站建设推广公司