Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: có cách nào lấy danh sách các điểm trên đường thẳng giữa 2 điểm cho trước in OpenGL

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

    Wink có cách nào lấy danh sách các điểm trên đường thẳng giữa 2 điểm cho trước in OpenGL

    mình đang nghiên cứu các phép biến đổi affine, khi mình muốn biến đổi một hình nào đó đương nhiên mình phải có danh sách các điểm của nó mới biến đổi, đơn giản ban đầu mình muốn biến đổi 1 đoạn thẳng, nhưng mình đang phân vân, có hàm nào mà khi input vào 2 điểm 2 đầu đoạn thẳng nó trả về cho mình danh sách điểm, còn kô chắc phải dùng thuật toán DDA để lấy danh sách điểm thôi, cảm ơn mọi người!

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

    Trích dẫn Nguyên bản được gửi bởi chanphat01001 Xem bài viết
    mình đang nghiên cứu các phép biến đổi affine, khi mình muốn biến đổi một hình nào đó đương nhiên mình phải có danh sách các điểm của nó mới biến đổi, đơn giản ban đầu mình muốn biến đổi 1 đoạn thẳng, nhưng mình đang phân vân, có hàm nào mà khi input vào 2 điểm 2 đầu đoạn thẳng nó trả về cho mình danh sách điểm, còn kô chắc phải dùng thuật toán DDA để lấy danh sách điểm thôi, cảm ơn mọi người!
    Chúa cũng không biết trên một đoạn thẳng có bao nhiêu điểm nửa bạn ơi! Sao bạn không chuyển tọa độ hai điểm rồi vẻ lại đoạn thẳng!

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

    Mình nghĩ là ko có hàm nào đâu. Xài MidPoint tốt hơn DDA. Nếu bạn biến đổi một đoạn thằng thì ko tội gì phài biến đổi hết tất cả các điểm của nó, chỉ cần biến đổi 2 đầu mút của nó và vẽ lại một đoạn thằng mới vì toán học đã chứng mình được rằng đoạn thằng qua phép biến đổi affine cũng là 1 đoạn thằng.
    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
    10 2007
    Bài viết
    169

    Dùng LineRL cùa mình tốt hơn MidPoint nếu chạy multi thread !

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

    nói như meoconlongvang thì nếu như đường cong thì làm sao lấy hai đầu rồi biến đổi, còn như RadicalLight nói làm sao biết được có bao nhiêu điểm trên đường thẳng thì cũng chưa hẳn, theo mình nghĩ khi dùng các hàm vẽ đường tròn hay ellipse, đường thẳng thì OpenGL nó cũng có thuật toán riêng của nó để vẽ nên hình mong muốn, như vậy chắc chắn nó phải biết trước những điểm để vẽ, cho nên mình mới nghĩ liệu nó có lưu lại danh sách những điểm nó đã vẽ, hay nó chỉ đơn thuần là vẽ không thối !

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

    Mặc định có cách nào lấy danh sách các điểm trên đường thẳng giữa 2 điểm cho trước in OpenGL

    Vì bạn đang nói về đường thẳng mà...!
    OpenGL dùng hình học vector chứ không phải raster nên bạn muốn tìm số điểm cũng không được đâu! Hơn nửa, nếu tìm được thì nó chỉ là số điểm ảnh trên buffer chứ không phải số điểm ảnh thực trong 3D, nếu thay đổi viewport thì đường thẳng sẻ bị đứt khúc!

    Dù bạn có vẽ đường thẳng hay đường cong thì cũng phải có điểm đầu và điểm cuối, cứ dựa vào đó mà thay đổi tọa độ! Cách tính ra từng điểm rồi chuyển đổi mình nghĩ không khả thi vì sẻ chạy rất chậm! Nếu có n điểm thì bạn phải áp dụng phép biến đổi n lần (có cả sin và cos nếu phải xoay)!

    Bạn có thể lưu được pixel bằng cách lưu trong khi dùng thuật toán vẻ, store vào aray thay vì draw pixel, nhưng không ai làm như vây đâu! Vì cuối cùng bạn cũng phải redraw pixel đó lại! Nếu làm theo cách của bạn thì phải :
    + Dùng thuật toán vẻ đường thẳng để lưu tọa độ điểm ảnh
    + Biến đổi tọa độ
    + SetPixel lại theo tọa độ mới

    Nhưng nếu bạn vẻ lại đoạn thẳng thì chỉ cần:
    + Biến đổi 2 điểm đầu và cuối
    + Dùng thuật toán vẻ đường thẳng

    Bước biến đổi toạn độ từng pixel sẻ làm chương trình chạy rất chậm nếu có nhiều đường thẳng!
    Đã được chỉnh sửa lần cuối bởi RadicalLight : 18-10-2008 lúc 08:58 PM.

  7. #7
    Ngày gia nhập
    09 2008
    Nơi ở
    Kĩ viện
    Bài viết
    169

    Hình tròn cũng là đường thẳng?. Kiến thức trên đại học hay thật .

    Kể cũng đúng, trong máy tính không có đường tròn , cái mà ta gọi là đường tròn chẳng qua cũng chỉ là một đống các đường thẳng ghép lại với nhau trông có vẻ tròn. Nếu bạn lấy 50 điểm để vẽ ra một đường tròn thì trông nó cũng có vẻ tròn, lấy 100 điểm thì sẽ tròn hơn, lấy vài triệu điểm thì "có kình hiển vi" mới biết được nó không tròn. Tóm lại, có vô số điểm, tùy bạn cần chính xác ở một mức nào đó thì lấy thôi. Làm gì có đoạn "lấy tất" .

    Còn làm thế nào mà lấy thì ..mình không biết. Đúng hơn là không cần biết. Đó không phải là việc của mình và nếu có thì cũng chẳng dại gì mà đi "phát minh lại bánh xe".

    Edit: Ấn send phải 15 phút rồi mà mới thấy được, chuyện thật như đùa.
    Đã được chỉnh sửa lần cuối bởi NamVoDang : 18-10-2008 lúc 08:56 PM.
    Phá toái hư không - Bạch nhật thăng thiên.

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

    Nếu nói như cậu thì cũng không có đoạn thẳng luôn mà chỉ có điểm ảnh thôi !

    Đồng ý là không ai lại đi phát minh lại bánh xe (vì nó thuộc dạng "All rights reserved" )! Nhưng sẻ không có bánh xe nếu không ai biết cách làm bánh xe, cũng không có những bánh xe như bây giờ nếu như ai cũng chấp nhận cái "bánh xe bò" của ngày xưa! Nguồn gốc của sự phát triển là kế thừa, nhưng kế thừa mà không biết đến cội nguồn thì sẻ sụp đổ!
    Đã được chỉnh sửa lần cuối bởi RadicalLight : 18-10-2008 lúc 09:13 PM.

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

    @NamVoDang : mình cũng bị y như bạn, mạng chậm rì.
    @chanphat01001 : ý kiến của 2 bạn trên là hoàn toàn chính xác đó, đoạn thẳng thì được xác định bởi 2 điểm, cứ việc đem biến đổi 2 điểm đó và vẽ lại đọan thẳng là xong.
    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.

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

  1. Vẽ đường thẳng và đường tròn trong openGL như thế nào ?
    Gửi bởi ngunenphaitu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 10-09-2012, 10:05 AM
  2. Vẽ các đoạn thẳng trên nền màn hình
    Gửi bởi kid1232 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 19-06-2011, 09:13 PM
  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. Chương trình vẽ đường thẳng trên C#?
    Gửi bởi thuan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 17-10-2010, 12:01 AM
  5. Vẽ nhiều đường thẳng đến 1 điểm trên C#!!!
    Gửi bởi long_uit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 28-04-2009, 02:40 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