求个菜鸟算法。

andibo 2011-11-28 11:40:45
已知两点 x1,y1 x2 y2, 在他们的连线上 离坐标2 x2y2 的距离为 100 的第三点x3,y3 ,vc 里该怎么写好。
...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjt19910817 2011-11-30
  • 打赏
  • 举报
回复
感觉不能用 斜率k 或者 1/k 做。
如果(x1,y1)(x2,y2) 的连线是 水平 或者 垂直 的情况
k会出现在分母,肯定得出错。

除非在开始做一下判断。
liujie250079934 2011-11-29
  • 打赏
  • 举报
回复
MoveTo(x1,y1);
LineTo(x2,y2);
你那个x3,y3是在x1,y1,到x2y2那条直线上的么
向立天 2011-11-29
  • 打赏
  • 举报
回复
用向量做很方便
看看这个类
http://blog.csdn.net/xianglitian/article/details/6127030
buyong 2011-11-29
  • 打赏
  • 举报
回复
开源geos库最新版有pointAlong函数,直接调用就行,也有源码
liuduo251 2011-11-29
  • 打赏
  • 举报
回复
这个好像是数学题目!先求出( x1,y1)( x2 ,y2)的线性方程;然后根据线性方程设(x3,y3)。这样就可以根据距离100得到两个方程式。VC解方程组。。。。
lyingbo 2011-11-29
  • 打赏
  • 举报
回复
这就是中学数学上的求解二次方程的解的问题,只不过要用程序求解,这个需要算法吗?????笔算求解的过程就是算法
yoyowar 2011-11-29
  • 打赏
  • 举报
回复

#include "stdio.h"
#include "math.h"

#define IN
#define OUT

typedef struct _xy_
{
float x;
float y;

}strXY;

void calcXY(IN strXY x1y1,IN strXY x2y2,OUT strXY *x3y3_l,OUT strXY *x3y3_h)
{
float k,b;

k = (x2y2.y-x1y1.y)/(x2y2.x-x1y1.x);

b = x2y2.y-k*x2y2.x;

x3y3_l->x = x2y2.x-100/sqrt(k*k+1);
x3y3_l->y = x3y3_l->x*k+b;

x3y3_h->x = x2y2.x+100/sqrt(k*k+1);
x3y3_h->y = x3y3_h->x*k+b;
}

int main(int argc,char *argv[]){

strXY x1y1,x2y2,x3y3_l,x3y3_h;

x1y1.x = 1;
x1y1.y = 1;

x2y2.x = 102;
x2y2.y = 102;

calcXY(x1y1,x2y2,&x3y3_l,&x3y3_h);

printf("X3Y3_L.X = %f\n",x3y3_l.x);
printf("X3Y3_L.Y = %f\n",x3y3_l.y);
printf("X3Y3_H.X = %f\n",x3y3_h.x);
printf("X3Y3_H.Y = %f\n",x3y3_h.y);

getch();
}

中学的代数,移植到VC中使用即可。X3 Y3 有两个点,需要注意。
zigangchen 2011-11-29
  • 打赏
  • 举报
回复

//有2个解
//假定直线方向为(x1, y1)到(x2, y2)
//isAfter为true,输出(x2, y2)后的点,否则为(x2, y2)前的点
void calcThirdPoint(double x1, double y1, double x2, double y2, bool isAfter, double & x3, double & y3)
{
double dx = x2 - x1;
double dy = y2 - y1;
double l = sqrt(dx * dx + dy * dy);
double r = 100.0 / l;
if (isAfter)
{
x3 = x2 + dx * r;
y3 = y2 + dy * r;
}
else
{
x3 = x2 - dx * r;
y3 = y2 - dy * r;
}
}

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧