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

asp.net c 网站开发网站推广公司大家好

asp.net c 网站开发,网站推广公司大家好,暗红色网站,网站建设微信营销公司一、实现效果:输入中点坐标点、内圆半径、外圆半径,绘制坐标点所在高度的水平面的两个圆形形成环形区域。 二、实现原理: 创建中心点所在平面的圆形几何体,将其分别挂接到同一个节点上,再将该节点挂接到用户绘制组节…

一、实现效果:输入中点坐标点、内圆半径、外圆半径,绘制坐标点所在高度的水平面的两个圆形形成环形区域。
在这里插入图片描述

二、实现原理:
创建中心点所在平面的圆形几何体,将其分别挂接到同一个节点上,再将该节点挂接到用户绘制组节点,用户绘制组节点挂接到地球节点。
三、参考代码:

void GlobeWidget::drawAnnularRegion(osg::Vec3d point, double innerRadius, double outerRadius)
{osgViewer::Viewer* viewer = m_osgWidget->getOsgViewer();if (!viewer) return;// 使用 osgEarth 转换经纬度到地球坐标osgEarth::GeoPoint geoPoint(osgEarth::SpatialReference::get("wgs84"),point.x(), point.y(), point.z(), osgEarth::ALTMODE_ABSOLUTE);osg::Vec3d cartesianCenter;geoPoint.toWorld(cartesianCenter);  // 转换为地球坐标系// 计算地表法线(从地心指向圆心)osg::Vec3d surfaceNormal = cartesianCenter;surfaceNormal.normalize();// 找到一个与地表法线垂直的向量osg::Vec3d rightVector;if (std::abs(surfaceNormal.x()) < 0.9) {rightVector = osg::Vec3d(1.0, 0.0, 0.0);} else {rightVector = osg::Vec3d(0.0, 1.0, 0.0);}rightVector = rightVector - surfaceNormal * (rightVector * surfaceNormal);rightVector.normalize();// 计算另一个垂直向量osg::Vec3d forwardVector = surfaceNormal ^ rightVector;forwardVector.normalize();// 创建环形区域的几何体osg::ref_ptr<osg::Geode> geode = new osg::Geode;osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;// 创建顶点数组osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array;const int numSegments = 36;// 存储外圆顶点数量int outerVertexCount = 0;for (int i = 0; i <= numSegments; ++i) {double angle = 2.0 * osg::PI * static_cast<double>(i) / static_cast<double>(numSegments);// 计算外圆上的点osg::Vec3d outerOffset = rightVector * cos(angle) * outerRadius + forwardVector * sin(angle) * outerRadius;osg::Vec3d outerPoint = cartesianCenter + outerOffset;vertices->push_back(outerPoint);outerVertexCount++;}for (int i = numSegments; i >= 0; --i) {double angle = 2.0 * osg::PI * static_cast<double>(i) / static_cast<double>(numSegments);// 计算内圆上的点osg::Vec3d innerOffset = rightVector * cos(angle) * innerRadius + forwardVector * sin(angle) * innerRadius;osg::Vec3d innerPoint = cartesianCenter + innerOffset;vertices->push_back(innerPoint);}geometry->setVertexArray(vertices.get());// 设置颜色(透明填充,仅显示边框)osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array;colors->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 0.0f));geometry->setColorArray(colors.get());geometry->setColorBinding(osg::Geometry::BIND_OVERALL);// 设置外圆图元为线带geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_STRIP, 0, outerVertexCount));// 设置内圆图元为线带geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_STRIP, outerVertexCount, vertices->size() - outerVertexCount));// 设置虚线样式osg::ref_ptr<osg::LineStipple> lineStipple = new osg::LineStipple;lineStipple->setFactor(1);lineStipple->setPattern(0xAAAA);osg::ref_ptr<osg::StateSet> stateSet = geometry->getOrCreateStateSet();stateSet->setAttributeAndModes(lineStipple.get(), osg::StateAttribute::ON);stateSet->setMode(GL_LINE_STIPPLE, osg::StateAttribute::ON);geode->addDrawable(geometry.get());// 将 Geode 添加到根节点m_userDrawGroup->addChild(geode.get());// 强制刷新场景viewer->requestRedraw();
}```
http://www.dtcms.com/wzjs/424026.html

相关文章:

  • 网站建设的前端和后端百度开户渠道
  • 北京网站制作的公司百度不让访问危险网站怎么办
  • 南昌网站seo外包百度seo刷排名网址
  • 如何做点击赚钱的网站网站流量统计查询
  • 做电影网站需要多打了服务器百度优化培训
  • 做网站对客户有什么帮助网站优化有哪些类型
  • 网站首页权重百度广告投放代理商
  • 自己做头像的网站漫画东莞市网络seo推广价格
  • 网站建设需要什么人爱站网长尾关键词挖掘
  • 行业网站建设详解南京最新消息今天
  • 完善政府门户网站建设方案自己做的网址如何推广
  • 建设营销型网站的步骤发布软文
  • 东莞个人网站推广建设seo引擎优化是什么
  • 关于网站的ppt怎么做google推广方式和手段有哪些
  • 免费云服务器网站有哪些长沙互联网推广公司
  • 椒江建设工程机械厂网站学电脑培训班
  • 房地产网站源码营销推广内容
  • 章莹颖被卖做性奴网站郑州seo推广优化
  • 网站开发小程序2022重大时政热点事件简短
  • 哈尔滨百度网站排名免费自助建站网站
  • wordpress文件夹权限设置方法网站关键词排名优化价格
  • wordpress全站使用cdn巨量引擎广告投放平台官网
  • 什么是速成网站靠谱的代运营公司
  • 站点传统的推广方式主要有2022最近比较火的热点话题
  • 网站开发协议域名检测查询
  • 自己做的网站怎么接入网页游戏直接下载app
  • asp.net 网站访问量免费域名申请网站
  • 东莞百度代做网站联系方式微信软文是什么
  • 建设工程公开招标网站广州的百度推广公司
  • wordpress隐藏邮件ip哪有培训seo