高中的一个知识#忘了。

lybapple 2003-12-19 10:09:33
从一中心点发出n条射线,
怎么得到离其中某一条射线在逆时针方向上偏离它最远的那条射线??
注:
已经知道:中心点的坐标和那n条射线上的某一点的坐标。
也就是总共n+1个点的坐标。
...全文
14 点赞 收藏 17
写回复
17 条回复
wildcat1984 2003年12月20日
#include <iostream.h>
#include <math.h>
class node{
public:
double angle;
double x;int y;
node(double a,double b):x(a),y(b){
double sina=x/sqrt(x*x+y*y),
cosa=y/sqrt(x*x+y*y);
angle=acos(cosa);
if(sina<0) angle=2*3.1415926-angle;
}
};
void main()
{node center(0,0);//假设已经平移过
node no[4]={node(2,1),node(-5,0),node(0,-5),node(-2,1)};
int num[4]={0,1,2,3};
for(int i=0;i<4;i++)
for(int j=0;j<3;j++)
if(no[num[j]].angle>no[num[j+1]].angle)
{num[j]=num[j]+num[j+1];
num[j+1]=num[j]-num[j+1];
num[j]=num[j]-num[j+1];
}
for(i=0;i<4;i++)
{cout<<no[num[i]].x<<endl<<no[num[i]].y
<<endl<<no[num[i]].angle<<endl<<endl;}
}
我只是把这四个点按角度大小排了一下序
:)
回复 点赞
lybapple 2003年12月20日
野猫的sina和cosa求反了,低级错误,呵呵!!
回复 点赞
wildcat1984 2003年12月19日
不过求出来的可能不是度数,而是弧度.
反余弦求出来的是0~~派,也就是得到4分之3派
再根据正弦为负,说明它应该大于派,
那么用2派减去3/4派就可以了
回复 点赞
wildcat1984 2003年12月19日
我觉得可以这样
设一个点(x,y)假设是(-1,1)吧
求正弦值.根号2.然后求余弦值.-根号2
然后反余弦求角度,是135或225(度).再根据
正弦值是正是负来
判断这个角大于还是小于180,就ok了
回复 点赞
blvssss 2003年12月19日
用余弦定理啊大哥们~~~~~~~~
cosc=(a2+b2-c2)/2ab
用3点坐标求出3条边长度,用公式算出余弦值,余弦值越大角度越小.不过要注意下方向~~~
回复 点赞
lybapple 2003年12月19日
主要是这个角度用什么好的方法来求,
因为是0-360的,
所以不是很好求阿,
要考虑方向的问题。
回复 点赞
wildcat1984 2003年12月19日
那么,求出这些角度,4是60(度,假设),1是180,2是270,3是300.
那么先找比4,60度小的射线----没有,然后找比360度小但是比
其他都大的射线----自然就是3了.可以先排序----
顺序是4,1,2,3,角度由小到大,
找比4还小的,没有,那么就直接找最后一个了
回复 点赞
lybapple 2003年12月19日
不好意思,最后一句是离射线4的角度最大。
回复 点赞
lybapple 2003年12月19日
4
/
/
/
/
1---\
| \
| \
| \
2 3

比如我的基线是4,要的是得到结果是3那条射线。
因为它在逆时针方向上,离3角度最大。
回复 点赞
wildcat1984 2003年12月19日
-----你不是说从一中心点发出n条射线,?
转换以后
那么这n条射线的起点都是原点拉
每条射线与x的夹角都在0~~2pi之间啊
回复 点赞
lybapple 2003年12月19日
不一定都是夹角。

--------\
\
\

上面就是一个钝角,而不是直线的夹角。
回复 点赞
wildcat1984 2003年12月19日
对了,好象不在单位圆上也可以求夹角
:)
回复 点赞
wildcat1984 2003年12月19日
我有一个想法:
改中心点0,0,相应地也改变其他点坐标.就是平移以下坐标轴.
然后把每个射线上的点坐标扩大几倍或缩小,使他们都在
单位圆上.
求出每条射线与x轴的夹角.
不知能否可行
回复 点赞
lybapple 2003年12月19日
是阿,就是怎么编程实现???????????
回复 点赞
wildcat1984 2003年12月19日
逆时针最远---就是顺时针最近啊
回复 点赞
lybapple 2003年12月19日
是的。
回复 点赞
qinxi 2003年12月19日
偏离最远是怎么定义的?角度范围?
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告