当前位置:首页 > 代码相关 > 正文内容

数值微分法(DDA)绘制直线

admin5年前 (2021-03-14)代码相关3449

数值微分法(Digital Differential Analyzer)直接从直线的微分方程生成直线。

详细的原理见以下链接:https://blog.csdn.net/weixin_43751983/article/details/106503634

这里直接用C#实现了,用的是计算机图形学基础这本书里提供的C++代码魔改的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Math;

namespace 数值微分法绘制线
{
    class Program
    {
        static void Main(string[] args)
        {
            DDAAlgorithm(0, 0, 5, 2);
            Console.ReadKey();
        }

        public static void DDAAlgorithm(int X0, int Y0, int X1, int Y1)
        {
            int dx, dy, epsl, k;
            float x, y, xIncre, yIncre;
            dx = X1 - X0;
            dy = Y1 - Y0;
            x = X0;
            y = Y0;
            if (Abs(dx) > Abs(dy))
            {
                epsl = Abs(dx);
            }
            else
            {
                epsl = Abs(dy);
            }
            xIncre = (float)dx / (float)epsl;
            yIncre = (float)dy / (float)epsl;

            for (int i = 0; i <= epsl; i++)
            {
                Console.WriteLine((int)(x + 0.5) + ", " + (int)(y + 0.5));
                x += xIncre;
                y += yIncre;
            }
        }
    }
}

这里和上面链接里的数据是一样的,得出来的结果如下:

image.png


扫描二维码推送至手机访问。

版权声明:本文由lovedm.club发布,如需转载请注明出处。

本文链接:https://lovedm.club/?id=123

分享给朋友:

“数值微分法(DDA)绘制直线” 的相关文章

类、对象、属性、方法

类:具有同种属性的对象称为类,是个抽象的概念。比如说:汽车、人、狗、房子;对象:类实例化后形成对象,具体的概念。如:小明是人的实例化;属性:用来描述具体某个对象的特征的是属性,是静态的。比如:小明身高1.8米多,体重50kg都是属性;方法:每个对象有它们自己的行为或者是使用它们的方法,比如说一只狗会...

C# 使用不安全的代码

首先需要在 项目->属性->生成 中勾选允许不安全代码下面的代码使用了指针,通过指针修改结构体的成员namespace _20200320 {     class Program   &nbs...

九九乘法表算法

九九乘法表算法

namespace _20200324 {     class Program     {         st...

C#事件_Sample_1

事件模型的五个组成部分:1、事件的拥有者(event source,只能是对象或类)2、事件成员(event,成员)3、事件的响应者(event subscriber,对象)4、事件处理器(event handler,成员)--本质上是一个回调方法5、事件订阅--把事件...

C# 与文件相关的几个类(2)

Directory类:静态类,主要处理文件目录。方法:CreateDirectory(String)在指定路径中创建所有目录和子目录,除非它们已经存在。返回值是一个DirectoryInfo对象Delete(String)从指定路径删除空目录。无返回值。Exists(String)确定给定路径是否引...

C# 使用FileStream进行文件复制操作

使用文件流进行操作,如下,其中注释部分是和非注释部分一样的,但是使用using语句是执行完后自动释放内存,而注释部分是手动释放。CopyFile方法中,缓冲区大小设为1024*1024字节,也就是1MB,Read方法和Write方法中,第一个参数都是缓冲区数组,第二个参数都是偏移量,这个量是在缓冲区...