Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: tọa độ giao điểm của hai đường thẳng

  1. #1
    Ngày gia nhập
    03 2008
    Nơi ở
    Nhà tù
    Bài viết
    37

    Mặc định tọa độ giao điểm của hai đường thẳng

    Bài toán:Tìm tọa độ giao điểm của hai đường thẳng AB và CD khi biết tọa độ của bốn điểm A,B,C,D

    Các bạn có thể gợi ý cho mình cáh thực hiện không.
    Đã được chỉnh sửa lần cuối bởi kegiaumat055 : 19-09-2008 lúc 06:19 PM.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Tìm slope của 2 lines ! !

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Cái này là toán học thuần túy thôi à. Bạn viết phương trình đường thẳng qua 2 điểm rồi giải hệ phương trình để tìm ra giao điểm. Từ đó bạn hãy lập công thức tìm ra mối liên hệ giữa 4 điểm của 2 đường thẳng và giao điểm của chúng. Có công thức rồi thì đưa vào code là chuyện quá dễ.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    03 2008
    Nơi ở
    Nhà tù
    Bài viết
    37

    Về phần toán học,mình đã làm nhiều rồi.Nhưng trong lập trình, mình không biết cách viết đường thẳng qua hai điểm

  5. #5
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi kegiaumat055 Xem bài viết
    Về phần toán học,mình đã làm nhiều rồi.Nhưng trong lập trình, mình không biết cách viết đường thẳng qua hai điểm
    phương trình tổng quát của đường thẳng Ax+By+C = 0;
    với 4 điểm bạn có thể viết được 2 phương trình đường thẳng.
    thông qua các hằng số A,B,C.
    được 6 hằng số này rồi bạn ngồi giải tay ra phương trình tính x theo y hoặc y theo x, nếu tính được 1 trong 2 thằng thì thằng còn lại đơn giản là thay vào 1 trong 2 phương trình là ok mà.

    cách viết 3 hệ số A,B,C từ 2 điểm thì lâu ngày quá mình không nhớ được. chỉ hướng dẫn bạn được vậy thôi.

    chúc bạn thành công.

  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Mặc định tọa độ giao điểm của hai đường thẳng

    Chỉ là tìm tọa độ giao điểm của hai đường thẳng chứ đâu bắt viết phương trình đường thẳng , bạn nên đọc lại yêu cầu đề bài.

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi kegiaumat055 Xem bài viết
    Về phần toán học,mình đã làm nhiều rồi.Nhưng trong lập trình, mình không biết cách viết đường thẳng qua hai điểm
    Mình đâu có bảo bạn phải lập trình gì đâu. Bạn chỉ cần lấy giấy nháp ra và tính toán công thức tọa độ giao điểm dựa vào 4 điểm của 2 đường thẳng. Có công thức rồi thì đem công thức đó vào code.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    10 2007
    Bài viết
    10

    Bài này mình từng làm từ rất lâu rồi, giờ thấy có người hỏi nên mình share code vậy. À, mà bài này là 2 đoạn thẳng với 2 đầu mút chứ không phải 2 đường thẳng nhé, nhưng ý tưởng thì gần như là giống nhau, sửa lại tí là xong.

    C++ Code:
    1. #include <iostream>
    2.  
    3. using namespace std;
    4.  
    5. //----------------------------------------------------
    6.  
    7. void Swap(double&a , double& b);
    8. /*!
    9.     alters a, b;
    10.     requires
    11.     ensures
    12.         a = #b and b = #a
    13.  
    14. !*/
    15.  
    16. bool Is_In(double x, double a, double b);
    17. /*!
    18.     requires
    19.         a <= b
    20.     ensures
    21.         Is_In = x is in [a,b]
    22. !*/
    23.  
    24. //----------------------------------------------------
    25.  
    26. void Swap(double& a, double& b)
    27. {
    28.     double temp = a;
    29.     a = b;
    30.     b = temp;
    31. }
    32.  
    33. bool Is_In(double x, double a, double b)
    34. {
    35.     return  ((x >= a) and (x <= b));
    36. }
    37.  
    38. //----------------------------------------------------
    39.  
    40. int main()
    41. {
    42.     double x1, x2, x3, x4, y1, y2, y3, y4, a1, a2, x;
    43.  
    44.     cout << "first segment (x1,y1)-(x2,y2): ";
    45.     cin >> x1 >> y1 >> x2 >> y2;
    46.     cout << "second segment (x3,y3)-(x4,y4): ";
    47.     cin >> x3 >> y3 >> x4 >> y4;
    48.  
    49.     //swap for later convenient comparison
    50.     if(x1>x2)
    51.     {
    52.         Swap(x1, x2);
    53.         Swap(y1, y2);
    54.     }
    55.     if(x3>x4)
    56.     {
    57.         Swap(x3, x4);
    58.         Swap(y3, y4);
    59.     }
    60.  
    61.     a1 = (y1-y2)/(x1-x2); //slope of the line contains segment 1
    62.     a2 = (y3-y4)/(x3-x4); //slope of the line contains segment 2
    63.     /*!
    64.         the line function
    65.             y = a*x - a*xo + yo
    66.             solve for x where two lines intersect
    67.     !*/
    68.  
    69.     if(a1 == a2) //special cases where 2 segments are parallel or lie on each other
    70.     {
    71.         if( (a2*(x1-x3) + y3) != y1 )
    72.         {
    73.             cout << endl << "The 2 segments are parallel";
    74.         }
    75.         else if(Is_In(x1, x3, x4) or Is_In(x2, x3, x4) or (x1 <= x3 and x2 >= x4))
    76.         {
    77.             cout << endl << "The 2 segments lie on each other";
    78.         }
    79.         else
    80.         {
    81.             cout << "The 2 segment do not intersect";
    82.         }
    83.     }
    84.     else
    85.     {
    86.         x = (a1*x1 - a2*x3 - y1 + y3)/(a1-a2);
    87.         if(x >= x1 and x <= x2)
    88.         {
    89.             cout << endl << "The 2 segments intersect at x = " << x << " y = " << a1*(x-x1) + y1;
    90.         }
    91.         else
    92.         {
    93.             cout << endl << "The 2 segments do not intersect";
    94.         }
    95.     }
    96.     return 0;
    97. }
    Đã được chỉnh sửa lần cuối bởi hvutrong : 26-08-2008 lúc 02:29 PM.

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Bài này chỉ cần dùng định thức cấp 2 là tính được . Đâu gì khó khăn vậy ?

  10. #10
    Ngày gia nhập
    09 2008
    Bài viết
    2

    Bài này theo tôi nghĩ là không đơn giản đâu. Nếu vẫn tôn trọng đề bài thì tôi nghĩ rất phức tạp. Vì theo toán học có thể có rất nhiều đường thẳng, vì cứ hai điểm tạo thành đường thẳng. Vậy với 4 điểm có 12 đường thẳng, biết chọn cặp nào và giải thuật ra sao, tôi thấy các huynh không ai nói đến giải thuật để giải bài toán này cả.

Các đề tài tương tự

  1. Bài tập C++ Bài tập các xác định 2 đoạn thẳng có giao nhau ko?
    Gửi bởi fithou trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 24-09-2014, 05:19 AM
  2. Hình chữ nhật và đường thẳng giao nhau
    Gửi bởi dotuan0610 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 20-05-2011, 10:47 AM
  3. ADO.NET Nối 2 button bằng đường thẳng trên giao diện
    Gửi bởi ngusaomanoi trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 25-03-2011, 10:34 PM
  4. Trình bày giải thuật Midpoint vẽ đoạn thẳng cho trường hợp -1<a<0
    Gửi bởi honeykt trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 18-07-2010, 07:58 AM
  5. Kỹ thuật C++ Trình bày giải thuật Midpoint vẽ đoạn thẳng cho trường hợp -1<a<0
    Gửi bởi honeykt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 14-07-2010, 09:39 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn