首页
社区
课程
招聘
[求助]怎样得到两点连成的直线上的所有点
发表于: 2006-11-8 20:10 6062

[求助]怎样得到两点连成的直线上的所有点

2006-11-8 20:10
6062
现在在写代码时碰到这样一个问题,设点A(100,100),点B(200,200)这两点连成一条直线,怎样得到A,B两点连成的直线上的所有点,那位兄弟能给个公式,先谢了

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
y = x
平面直接坐标系...
2006-11-8 20:16
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是的.坐标全部是为正数.
2006-11-8 20:31
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
公式我不会,写一段垃圾代码吧
int iX = 100;
int iY = 100;
for (int i = 0; i <= 100; i++)
putpixel(iX + i, iY + i; WHITE);
2006-11-8 20:31
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个算法不能通用,这是这两点的特殊算法,如果点A(100,100)
点B(100,200)呢,我想求任意两点连成直线后,得到在这条直线上的所有点
2006-11-8 21:21
0
雪    币: 1325
活跃值: (507)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
6
这个与直线实现的算法有关吧,不一样的算法在处理锯齿时应该会用不同的像素点吧
2006-11-8 22:59
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
没关系,哪位老兄能给个公式啊
2006-11-8 23:19
0
雪    币: 51
活跃值: (1841)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
y=ax+b
将两个点的坐标分别代入解方程即可
2006-11-9 00:35
0
雪    币: 466
活跃值: (165)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
9
可以用向量得到:
若有三点A(x1,y1) B(x2,y2) C(x3,y3)共线,则必有向量ab cb共线。即(x1*y2-x2*y1)=(x1*y3-x3*y1)
以下是C语言代码。
#include <stdio.h>
main()
{
int i;
/*a(arr[0][0],arr[1][0])b(arr[0][1],arr[1][1])*/
int arr[2][2]={{100,200},{100,200}};
/* c(arrin[0][0],arrin[1][0]))*/
int arrin[2][1];
clrscr();
for (i=0;i<3;i++){
   printf("please input two interget.\n");
/* input c  */
   scanf("%d%d",&arrin[0][0],&arrin[1][0]);
   if ((arr[0][0]*arrin[1][0]-arrin[0][0]*arr[1][0])==(arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0]))
      printf("the point c(%d %d) is on the line!\n",arrin[0][0],arrin[1][0]);
   else
      printf("the point c(%d %d) is not on the line!\n",arrin[0][0],arrin[1][0]);
   }
}
2006-11-9 09:18
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
http://www.google.com/search?hl=zh-CN&inlang=zh-CN&newwindow=1&q=dda%E7%AE%97%E6%B3%95&btnG=%E6%90%9C%E7%B4%A2&lr=
2006-11-9 11:30
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
貌似初中数学问题
2006-11-9 13:38
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢各位高手的支持.先收下了
2006-11-9 15:29
0
雪    币: 188
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
POINT p1(x1,y1), p2(x2,y2);
int dltx = abs(x2-x1), dlty=abs(y2-y1);
int n=max(dltx, dlty);
POINT *prst=new POINT[n];

if (dltx>dlty)
{
   if (x1>x2)
   {
     for(int x=x1; x<x2; x++)
     {
        prst[x-x1].x=x-x1;
        prst[x-x1].y=y1+(y2-y1)*(x1-x)/(x2-x1);
     }
   }
   else
   {
        .......
   }
}
else
{
   ......
}
2006-11-14 10:34
0
游客
登录 | 注册 方可回帖
返回
//