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

网站备案前置审批表dw做网站教程视频

网站备案前置审批表,dw做网站教程视频,怎样策划一个营销型网站,seo网站优化价格描述 在Qt中,要计算一个点到一条线段的垂线段的长度(即点到线段上最近点的距离,且这个点是垂直于线段的),你不能直接使用QVector2D::distanceToLine,因为这个方法计算的是点到直线的垂直距离,而…

描述 

在Qt中,要计算一个点到一条线段的垂线段的长度(即点到线段上最近点的距离,且这个点是垂直于线段的),你不能直接使用QVector2D::distanceToLine,因为这个方法计算的是点到直线的垂直距离,而不是到线段的垂直距离。线段有起点和终点,而直线是无限延伸的。

为了计算点到线段的垂线段长度,你需要考虑几种情况:

  1. 如果点的投影在线段上,则垂线段长度就是点到投影点的距离。
  2. 如果点的投影在线段的起点或终点之外,则垂线段长度是点到线段起点或终点的距离中的较小值(这个没搞清楚。好在我当前的需求,不会出现投影在线段之外的情况)。

下面是一个使用QVector2D和简单的几何计算来实现这一功能的示例代码:

实验代码 

函数:

qreal Widget::pointToSegmentDistance(const QVector2D &point, const QVector2D &segmentStart, const QVector2D &segmentEnd) {QVector2D segmentDirection = segmentEnd - segmentStart;QVector2D vecFromStartToPoint = point - segmentStart;// 计算投影系数qreal t = QVector2D::dotProduct(vecFromStartToPoint, segmentDirection) / QVector2D::dotProduct(segmentDirection, segmentDirection);qDebug() << t;// 如果投影系数小于0,则最近点是线段起点if (t < 0.0) {return QVector2D(point - segmentStart).length();}// 如果投影系数大于1,则最近点是线段终点if (t > 1.0) {return QVector2D(point - segmentEnd).length();}// 投影在线段上,计算垂线段长度QVector2D projection = segmentStart + t * segmentDirection;return QVector2D(point - projection).length();
}

在paintEvent函数中实现划线,并调用 pointToSegmentDistance计算垂线段距离

void Widget::paintEvent(QPaintEvent *event)
{qreal distance;QPainter painter(this);QPen pen(Qt::blue,3);painter.setPen(pen);QPointF point(100,100);pen.setColor(Qt::blue);painter.setPen(pen);painter.drawPoint(point);pen.setColor(Qt::red);painter.setPen(pen);painter.drawText(QPointF(100,100),"point");QVector2D point_2d(point);QLineF line(50,50,50,150);pen.setColor(Qt::blue);painter.setPen(pen);painter.drawLine(line);pen.setColor(Qt::red);painter.setPen(pen);painter.drawText(line.center(),"line_1");QVector2D line_start_2d(line.p1());QVector2D line_end_2d(line.p2());distance = pointToSegmentDistance(point_2d,line_start_2d,line_end_2d);qDebug() << " to line 1 distance : " << distance;QLineF line2(50,50,150,50);pen.setColor(Qt::blue);painter.setPen(pen);painter.drawLine(line2);pen.setColor(Qt::red);painter.setPen(pen);painter.drawText(line2.center(),"line_2");QVector2D line2_start_2d(line2.p1());QVector2D line2_end_2d(line2.p2());distance = pointToSegmentDistance(point_2d,line2_start_2d,line2_end_2d);qDebug() << " to line 2 distance : " << distance;QLineF line3(150,50,150,150);pen.setColor(Qt::blue);painter.setPen(pen);painter.drawLine(line3);pen.setColor(Qt::red);painter.setPen(pen);painter.drawText(line3.center(),"line_3");QVector2D line3_start_2d(line3.p1());QVector2D line3_end_2d(line3.p2());distance = pointToSegmentDistance(point_2d,line3_start_2d,line3_end_2d);qDebug() << " to line 3 distance : " << distance;QLineF line4(150,200,150,300);pen.setColor(Qt::blue);painter.setPen(pen);painter.drawLine(line4);pen.setColor(Qt::red);painter.setPen(pen);painter.drawText(line4.center(),"line_4");QVector2D line4_start_2d(line4.p1());QVector2D line4_end_2d(line4.p2());distance = pointToSegmentDistance(point_2d,line4_start_2d,line4_end_2d);qDebug() << " to line 4 distance : " << distance;QLineF line5(300,200,300,150);pen.setColor(Qt::blue);painter.setPen(pen);painter.drawLine(line5);pen.setColor(Qt::red);painter.setPen(pen);painter.drawText(line5.center(),"line_5");QVector2D line5_start_2d(line5.p1());QVector2D line5_end_2d(line5.p2());distance = pointToSegmentDistance(point_2d,line5_start_2d,line5_end_2d);qDebug() << " to line 5 distance : " << distance;
}

测试结果:

qDebug输出的结果:

小结 

http://www.yayakq.cn/news/924797/

相关文章:

  • 建设集团有限公司网站18款禁用黄app入口直接看
  • 项目定制开发网站网站建设 psd
  • wordpress 自己创建主题八上数学优化设计答案
  • h5网站设计上海网站搜索排名优化哪家好
  • 龙游县住房和城乡建设局网站电商网站构成
  • 专业网站建设是哪家好杭州做网站需要多少钱
  • 广州网站建设需要多少费用郑州做商城网站
  • 外贸网站建设解决方案现在的网站开发方式
  • 福建省建设注册管理中心网站网站设计 线框图
  • 想学做网站学什么编程语言高埗镇仿做网站
  • cpa怎么做网站石家庄百度推广家庄网站建设
  • 知名自助建站平台个人主页html代码
  • 如何购物网站建设科技网站设计公司
  • 免费自动建站秀色直播app软件大全
  • 怎么建网站新手入门关键词网站排名查询
  • 哈尔滨建站人网站建设总体要求
  • 网站公司策划书网上做网站怎么赚钱吗
  • 做网站多少钱google深圳东门市场
  • 中山建网站wordpress 修改小部件
  • 下载免费网站模板在线下单网站怎么做
  • 建设论坛网站需要做什么的免费建站系统官网
  • appstar官网seo视频教程百度云
  • 搭建直播网站需要怎么做如何建设企业网站呢
  • 企业网站的基本类型包括怎样制作个人网站
  • 做阿里巴巴网站多少钱柳州网站定制
  • 那个网站可以做家具效果图永济做网站单价
  • 西安注册公司网站网络服务的工具
  • 昆山做企业网站娱乐网站制作
  • 版式设计网站群晖可不可以做网站用
  • 南平建设企业网站网页设计网站如何添加链接