| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2067 人关注过本帖
标题:c++ 编程问题~!有一个点Point(x,y),已知有一条线,线的两个点分别是PointS ...
只看楼主 加入收藏
yuan453
Rank: 2
等 级:论坛游民
帖 子:18
专家分:10
注 册:2013-1-31
结帖率:20%
收藏
已结贴  问题点数:20 回复次数:10 
c++ 编程问题~!有一个点Point(x,y),已知有一条线,线的两个点分别是PointStart(x1,y1),PointEnd(x2,y2),写一个程序
证明点Point在线的上面,线的下面还是在这条线上


c++!!

[ 本帖最后由 yuan453 于 2013-9-13 08:52 编辑 ]
搜索更多相关主题的帖子: 在线的 
2013-09-13 08:06
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:4 
读过高中之后,做这道题就不难了,
用向量来做

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-09-13 08:22
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:4 
楼上所言极是...楼主自己根据高中的数学公式写吧...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-13 08:24
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
求出x 到x1 和x2 的向量,比如(x01,y01),(x02,y02),如果共线,x01 * x02 - y01*y02 = 0,这个是向量共线的一个充分必要条件
x01= x - x1
y01= y - y1

x02 同样计算
y02

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-09-13 08:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:4 
什么叫“线的下面还是在这条线上”?
2013-09-13 09:20
yuan453
Rank: 2
等 级:论坛游民
帖 子:18
专家分:10
注 册:2013-1-31
收藏
得分:0 
回复 5楼 rjsp
线的上方, 线的下方  还有这条线经过这个点
2013-09-13 09:43
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
回复 6楼 yuan453
哦...没看见还要算上下方咧

那就算斜率吧...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-13 09:53
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:4 
先求直线方程,把待求点的xp代入方程求y,最后比较yP和y。解析几何画下很直观

[ 本帖最后由 qunxingw 于 2013-9-14 09:00 编辑 ]

www.qunxingw.wang
2013-09-14 08:53
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
收藏
得分:4 
#ifndef __LINE_H__
#define __LINE_H__

// 平面点类
class Point
{
public:
    Point();
    Point(int x, int y);
    Point(const Point& other);

    ~Point();

    Point& operator=(const Point& other);

    int getX()const{return m_x;}
    int getY()const{return m_y;}

private:
    int m_x;
    int m_y;
};

// 平面线类
class Line
{
public:
    Line();
    Line(const Point& pStart, const Point& pEnd);
    ~Line();

    bool isOnLine(const Point& pt)const;

private:
    Point m_start;
    Point m_end;
};

#endif    // __LINE_H__
// end of line.h

#include "line.h"
#include <iostream>

Point::Point() : m_x(0), m_y(0)
{
    std::cout << "Point : A original point" << std::endl;
}

Point::Point( int x, int y ) : m_x(x), m_y(y)
{
    std::cout << "Point : " << x << "," << y << std::endl;
}

Point::Point( const Point& other ) : m_x(other.m_x), m_y(other.m_y)
{
    std::cout << "Copy a point : " << m_x << "," << m_y << std::endl;
}

Point::~Point()
{
}

Point& Point::operator=( const Point& other )
{
    m_x = other.m_x;
    m_y = other.m_y;
    return *this;
}

//////////////////////////////////////////////////////////////////////////

Line::Line()
{
    std::cout << "Line : A original point" << std::endl;
}

Line::Line( const Point& pStart, const Point& pEnd )
{
    m_start = pStart;
    m_end = pEnd;
    std::cout << "Line : Start(" << pStart.getX() << "," << pStart.getY() << ")" << '\t';
    std::cout << "End(" << pEnd.getX() << "," << pEnd.getY() << ") " << std::endl;
}

Line::~Line()
{
}

bool Line::isOnLine( const Point& pt ) const
{
    // (x1*y2-x2*y1)=(x1*y3-x3*y1)网摘算法
    const int& x = pt.getX();
    const int& y = pt.getY();
    int t1 = m_start.getX() * m_end.getY();
    t1 -= m_end.getX() * m_start.getY();
    int t2 = m_start.getX() * y;
    t2 -= x * m_start.getY();
    if (t1 == t2) {
        return true;
    }
    return false;
}    // end of line.cpp

主函数调用:
Point p1(2, 2);
Point p2(3, 3);
Point p3(4, 4);
Line l(p1, p2);
if (l.isOnLine(p3)) {
    std::cout << "Is on the Line" << std::endl;
} else {
    std::cout << "Not on the Line" << std::endl;
}


关于线上还是线下(相对平面而言),我就不写完了。楼主请再自行思考下。上面的代码只是参考,考虑并不全面。
2013-09-16 09:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
先在數學上解決了這個問題,再談如何寫程序。程序用什麽語言寫都不是問題,代碼只是表達思想的工具,思想都沒整理清楚,談程序怎麽寫是沒用的。這個問題也不是表面看的那麽簡單,其中需要注意的細節很多,比如用斜率的時候要考慮直線與y軸平行、兩點是同一點等等很細微的問題,都是要處理的。

授人以渔,不授人以鱼。
2013-09-16 09:49
快速回复:c++ 编程问题~!有一个点Point(x,y),已知有一条线,线的两个点分别是P ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042757 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved