iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >利用C#实现绘制出地球旋转效果
  • 792
分享到

利用C#实现绘制出地球旋转效果

C#实现地球旋转效果C#地球旋转C#地球 2023-02-28 17:02:45 792人浏览 安东尼
摘要

将方形的图像映射到正方形上似乎并没有什么难度,所以接下来要做的是把图像映射到球面上。 而球的参数方程为 x​=rcosϕcosθ y=rcosϕsinθ z=

将方形的图像映射到正方形上似乎并没有什么难度,所以接下来要做的是把图像映射到球面上。

而球的参数方程为

x​=rcosϕcosθ

y=rcosϕsinθ

z=rsinϕ​

由于r的值是恒定的,所以生成球的关键参数就是θ, φ而把地图贴在球上就相当于把图像坐标(x,y)映射到坐标θ,φ上。

其中地图为

private MeshGeometry3D SetEarth(int numx, int numz, double r=3)
{
    MeshGeometry3D mesh = new MeshGeometry3D();

    double dTh = 2 * Math.PI / numx;
    double dPhi = Math.PI / numz;

    double X(double th, double phi) => r * Math.Sin(phi) * Math.Cos(th);
    double Y(double th, double phi) => r * Math.Sin(phi) * Math.Sin(th);
    double Z(double phi) => r * Math.Cos(phi);

    // Make the points.
    for (int i = 0; i <= numx; i++)
        for (int j = 0; j <= numz; j++)
        {
            var th = i * dTh;
            var phi = j * dPhi;
            mesh.Positions.Add(new Point3D(X(th, phi), Y(th, phi), Z(phi)));
            mesh.TextureCoordinates.Add(new Point(th, phi));
        }

    // 生成三角形
    for (int i = 0; i < numx; i++)
        for (int j = 0; j < numz; j++)
        {
            int i1 = i * (numz + 1) + j;
            int i2 = i1 + 1;
            int i3 = i2 + (numz + 1);
            int i4 = i3 - 1;
            mesh.TriangleIndices.Add(i1);
            mesh.TriangleIndices.Add(i2);
            mesh.TriangleIndices.Add(i3);

            mesh.TriangleIndices.Add(i1);
            mesh.TriangleIndices.Add(i3);
            mesh.TriangleIndices.Add(i4);
        }
    return mesh;
}

生成的地球为

如果生成之后地球躺平了,可以调整一下LookDirection。

如果仅仅是这样,那显然是不行的,因为只看到一个二维的圆形,无法让人觉得这是个地球,接下来就要让这个球转起来。

方法是新建一个Timer,

public MainWindow()
{
    InitializeComponent();
    initialize3D();
    timer.Interval = TimeSpan.FromMilliseconds(5);
    timer.Tick += Timer_Tick;
    timer.Start();
}

然后随着时间而旋转

double thAngle = 0;
private void Timer_Tick(object? sender, EventArgs e)
{
    thAngle = thAngle > Math.PI ? 0 : thAngle + 0.1;
    Rotation3D rotation = new AxisAngleRotation3D(new Vector3D(0,0,1), thAngle);
    var rot = new RotateTransfORM3D(rotation, new Point3D(0,0,0));
    Point3D[] pts = mesh.Positions.ToArray();
    rot.Transform(pts);
    mesh.Positions = new Point3DCollection(pts);
}

结果为

到此这篇关于利用C#实现绘制出地球旋转效果的文章就介绍到这了,更多相关C#地球旋转内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用C#实现绘制出地球旋转效果

本文链接: https://www.lsjlt.com/news/197870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用C#实现绘制出地球旋转效果
    将方形的图像映射到正方形上似乎并没有什么难度,所以接下来要做的是把图像映射到球面上。 而球的参数方程为 x​=rcosϕcosθ y=rcosϕsinθ z=...
    99+
    2023-02-28
    C#实现地球旋转效果 C#地球旋转 C#地球
  • 怎么利用C#实现绘制出地球旋转效果
    这篇文章主要介绍“怎么利用C#实现绘制出地球旋转效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用C#实现绘制出地球旋转效果”文章能帮助大家解决问题。将方形的图像映射到正方形上似乎并没有什么...
    99+
    2023-07-05
  • Python实现绘制3D地球旋转效果
    目录画一个地球让地球转起来画一个地球 想画一个转动的地球,那么首先要有一个球,或者说要有一个球面,用参数方程可以表示为 x​=rcosϕcosθ y=rcosϕsin&t...
    99+
    2023-02-28
    Python实现3D地球旋转效果 Python 地球旋转 Python 地球
  • Python如何实现绘制3D地球旋转效果
    这篇“Python如何实现绘制3D地球旋转效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现绘制3D地球...
    99+
    2023-07-05
  • CSS绘制奇幻效果:实现3D旋转立方体效果
    在Web开发中,我们常常需要使用CSS来实现各种奇幻的效果,而其中一个很受欢迎的效果就是3D旋转立方体效果。通过CSS的3D转换属性,我们可以很轻松地实现这一效果。下面,我将为大家详细介绍如何使用CSS来实现一个3D旋转立方体,并提供具体的...
    99+
    2023-10-21
    CSS 绘制 D旋转 立方体效果
  • Android利用Flutter实现立体旋转效果
    目录前言ImageShader 简介构建 ui.Image对象使用 ImageShader 填充形状立体旋转效果实现总结前言 之前我们提到了 CustomPaint er 的 Pai...
    99+
    2024-04-02
  • C++ OpenGL实现旋转立方体的绘制
    目录1、Z-缓冲2、GLM库函数3、PVM矩阵4、PVM矩阵的使用5、工程文件结构shader.hshader.cppmain.cpp 1、Z-缓冲 //开启深度测试 ...
    99+
    2024-04-02
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2024-04-02
  • 利用Jetpack Compose实现绘制五角星效果
    目录说明自定义星行Modifier原理实现代码最终实现效果说明 compose中我们的所有ui操作,包括一些行为,例如:点击、手势等都需要使用Modifier来进行操作。因此对Mod...
    99+
    2024-04-02
  • 利用JavaScript实现3D可旋转粒子矩阵效果
    目录演示技术栈dat.gui.min.js源码js部分演示 技术栈 本次使用了dat.gui.min.js这个新库(就是在我文章里没有出现过的那么他们的功能有哪些呢?—...
    99+
    2024-04-02
  • 怎么利用Jetpack Compose实现绘制五角星效果
    本文小编为大家详细介绍“怎么利用Jetpack Compose实现绘制五角星效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么利用Jetpack Compose实现绘制五角星效果”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-06-30
  • 利用CSS实现日地月公转动画效果
    本篇内容主要讲解“利用CSS实现日地月公转动画效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“利用CSS实现日地月公转动画效果”吧!HTML重点是CSS,HT...
    99+
    2024-04-02
  • CSS过渡效果:如何实现元素的淡入淡出旋转效果
    CSS过渡效果:如何实现元素的淡入淡出旋转效果CSS过渡效果是一种用来控制元素状态改变时的动画效果,可以实现元素的平滑过渡。在本篇文章中,我将介绍如何使用CSS来实现元素的淡入淡出旋转效果,并提供具体的代码示例。首先,我们需要创建一个HTM...
    99+
    2023-11-21
    CSS 元素 过渡
  • 怎么利用纯CSS实现头像旋转和发光的效果
    小编给大家分享一下怎么利用纯CSS实现头像旋转和发光的效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:<!DOCTYPE html&g...
    99+
    2023-06-08
  • 如何利用纯CSS实现旋转React图标的动画效果
    如何利用纯CSS实现旋转React图标的动画效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。几天前,小编在 codepen 看到一个剑气...
    99+
    2024-04-02
  • 怎么使用CSS3实现旋转光环效果
    这篇文章主要介绍了怎么使用CSS3实现旋转光环效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.html框架<div class=...
    99+
    2024-04-02
  • 使用纯CSS如何实现3D旋转效果
    小编给大家分享一下使用纯CSS如何实现3D旋转效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!主要使用CSS中的 preserve-3d 、perspective 属性实现3D效果效果HTML代码<body>...
    99+
    2023-06-08
  • 用Unity实现使用鼠标旋转物体效果
    本篇内容主要讲解“用Unity实现使用鼠标旋转物体效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用Unity实现使用鼠标旋转物体效果”吧!本文实例为大家分享了Unity使用鼠标旋转物体效果的...
    99+
    2023-06-20
  • 怎么在Android应用中利用Bitmap实现一个位图旋转效果
    怎么在Android应用中利用Bitmap实现一个位图旋转效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。位图的旋转也可以借助Matrix或者Canvas来实现。通过po...
    99+
    2023-05-31
    android bitmap roi
  • 如何使用CSS3实现的科技球体旋转动画特效
    这篇文章主要为大家展示了“如何使用CSS3实现的科技球体旋转动画特效”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用CSS3实现的科技球体旋转动画特效”这...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作