gpt4 book ai didi

c - DDA 算法不为某些坐标绘制线条?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:51 27 4
gpt4 key购买 nike

我的代码对 slope=1 正常工作,但对其他斜率无效。它为 1 以外的斜率绘制水平线或垂直线。这段代码有什么问题。我们将不胜感激。

#include <graphics.h>
#include <stdio.h>
#include <math.h>

int main( )
{
int x,y,x1,y1,x2,y2,dx,dy;
float step;

int i,gd,gm;

printf("Enter the value of x1,y1: ");
scanf("%f%f",&x1,&y1);
printf("Enter the value of x2,y2 : ");
scanf("%f%f",&x2,&y2);


detectgraph(&gd,&gm);
initgraph(&gd,&gm,"");

dx=abs(x2-x1);
dy=abs(y2-y1);

if(dx>=dy)
step=dx;
else
step=dy;

dx=dx/step;
dy=dy/step;

x=x1;
y=y1;

i=1;
while(i<=step)
{
putpixel(x,y,1);
x=x+dx;
y=y+dy;
i=i+1;
delay(100);
}
getch();
}

最佳答案

dx=dx/step;
dy=dy/step;

您已将 step 设置为 float ,但 dx 和 dy 是整数。因此,这个除法会给你这 2 个值之一的 0。我的印象是 DDA 例程都是整数,所以里面有 float 让我感到奇怪。我将更深入地研究该算法,看看我还能找到什么。

Here's以不会将步骤归零的方式使用 float 的例程。

another适用于 Windows。

关于c - DDA 算法不为某些坐标绘制线条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com