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ố 13 kết quả

Đề tài: Ma trận các phép biến đổi trong đồ họa máy tính.

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Thumbs up Ma trận các phép biến đổi trong đồ họa máy tính.

    Không biết chủ đề của mình tạo ra có hợp lý? Vì trong diễn đàn không thấy mục nào về "Đồ họa máy tính". Mình cũng xin liều được post bài liên quan đến ĐHMT, mong các Mod thông cảm nhé!
    Câu hỏi như sau:
    Cho biết ma trận các phép biến đổi dùng để biến đổi:
    a.một hình tròn thành hình ellipse và ngược lại.
    b.một hình vuông thành hình chữ nhật, hình bình hành và ngược lại.
    Mong các bạn đã học ĐHMT rồi cho mình một số gợi ý để trả lời câu hỏi này.
    Thanks.

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Để biểu diễn phép biến hình bằng ma trận cần biết 1 ít về hình học xạ ảnh, đại ý như sau. Mỗi điểm trong không gian R^n (không gian Euclid n chiều) ứng với một điểm trong P^n (không gian xạ ảnh n chiều). Mỗi điểm trong P^n lại được biểu diễn bằng một không gian con 1 chiều của R^(n+1). Cách xây dựng biểu diễn được chỉ qua ví dụ.

    Ví dụ 1. (n = 1, biểu diễn các điểm trên đường thẳng). Trong mặt phẳng tọa độ R^2 = Oxt chọn *tâm chiếu* là một điểm I nằm trên trục Ot: I = (0,-1). Ta biểu diễn các điểm trên đường thẳng R^1 = Ox. Điểm A = (x,0) được biểu diễn bằng một véc-tơ chỉ phương IA, chẳng hạn, (x,1), (2*x, 2), (3*x,3),.... Điểm xa vô cùng được biểu diễn bằng một véc-tơ chỉ phương Ox, chẳng hạn, (1,0), (2,0), (3,0),... (Chú ý điểm xa vô cùng là điểm mở rộng của không gian: nó không có trong R^1 mà chỉ có trong P^1.) Khi một điểm được biểu diễn bằng véc-tơ v thì nó cũng được biểu diễn bằng véc-tơ k * v, k ≠ 0, bất kỳ. Tập hợp các véc-tơ k*v (kể cả k=0) tạo thành một không gian con 1 chiều của R^2 và chúng cùng biểu diễn một điểm của P^1 (và cả R^1, nếu có).

    Ví dụ 2. (n = 2, biểu diễn các điểm trên mặt phẳng). Trong không gian tọa độ R^3 = Oxyt chọn *tâm chiếu* là một điểm I nằm trên trục Ot: I = (0,0,-1). Ta biểu diễn các điểm trên mặt phẳng R^2 = Oxy. Điểm A = (x,y,0) được biểu diễn bằng véc-tơ chỉ phương IA, chẳng hạn (x,y,1), (2*x,2*y,2). Trong mặt phẳng Oxy kẻ đường thẳng qua O theo phương (x,y,0). Điểm nằm trên đường thẳng này mà ở xa vô cùng được biểu diễn bằng một véc-tơ chỉ phương của đường thẳng này, chẳng hạn (x,y,0), (2*x,2*y,0), (3*x,3*y,0),... (Chú ý tương tự ví dụ 1: điểm xa vô cùng không có trong không gian R^2 mà chỉ có trong không gian P^2.) Cũng tương tự ví dụ 1, khi một điểm được biểu diễn bằng véc-tơ v thì nó cũng được biểu diễn bằng véc-tơ k * v, k ≠ 0, bất kỳ. Tập hợp các véc-tơ k*v tạo thành một không gian con 1 chiều của R^3 và chúng cùng biểu diễn một điểm của P^2 (và cả R^2, nếu có).

    Ví dụ 3. (n = 3, biểu diễn các điểm trong không gian). Trong không gian tọa độ R^4 = Oxyzt chọn *tâm chiếu* là một điểm I nằm trên trục Ot: I = (0,0,0,-1). Ta biểu diễn các điểm trong không gian R^3 = Oxyz bằng véc-tơ 4 chiều, tương tự như hai ví dụ trên.

    Hình học xạ ảnh có lợi thế là cho phép tính giao điểm của các đường thẳng và giao tuyến của các mặt phẳng mà không cần phải phân chia trường hợp chúng cắt nhau hay song song: 2 đường thẳng cắt nhau ở 1 điểm trong R^n cũng cắt nhau ở điểm tương ứng trong P^n, 2 đường thẳng song song trong R^n vẫn cắt nhau ở một điểm nhất định (xa vô cùng) trong P^n.

    Ngoài ra, hình học xạ ảnh còn có lợi thế là cho phép tính các phép biến hình bằng phép nhân ma trận.

    Biểu diễn phép biến hình. Nếu xem như các điểm của P^n được biểu diễn bằng véc-tơ (n+1) chiều thì các phép biến hình "thông dụng" như tịnh tiến, quay, lật, vị tự, co giãn 1 hay nhiều tọa độ,... đều biểu diễn được bằng một ma trận cỡ (n+1)*(n+1). Véc-tơ biểu diễn ảnh của một điểm cho trước qua phép biến hình là tích của véc-tơ biểu diễn điểm đã cho với ma trận biểu diễn phép biến hình. Bằng ký hiệu, nếu [T] là ma trận của phép biến hình T, a là một điểm thì a', ảnh của a qua T, được tính bởi

    a' = a * [T]

    Chú ý quy ước: véc-tơ n chiều là một ma trận có 1 hàng và n cột.

    Nếu T1,T2 là hai phép biến hình thì ma trận của tích T1 o T2 là tích các ma trận của T1 và T2:

    [T1 o T2] = [T1] * [T2]

    Trong P^2, một điểm được xác định bằng véc-tơ 3 chiều và phép biến hình biểu diễn bằng ma trận cỡ 3*3. Để xác định ma trận của 1 phép biến hình T, cần biết 3 điểm a, b, c không thẳng hàng và ảnh a', b', c' của chúng qua T. Từ đó ta lập được phương trình để tính [T]:

    a' = a*[T]
    b' = b*[T]
    c' = c*[T]

    hoặc viết lại dưới dạng ma trận:

    [a',b',c'] = [a,b,c] * [T]


    Chú ý quy ước: [a,b,c] là ma trận gồm 3 hàng a, b, c theo thứ tự lần lượt từ trên xuống dưới.

    Điều kiện a, b, c không thẳng hàng là cần và đủ để phương trình này có nghiệm duy nhất.


    Để tính ma trận các phép biến hình phức tạp, có thể bắt đầu từ phép tính ma trận cho vài phép biến hình đơn giản, chẳng hạn như:

    - tịnh tiến,
    - lật quanh trục tọa độ,
    - quay quanh gốc tọa độ,
    - vị tự với tâm là gốc tọa độ,
    - co / giãn 1 tọa độ.

    Sau đó, phân tích phép biến hình cần tìm ma trận thành tích các phép biến hình đơn giản rồi áp dụng công thức tính ma trận của tích.
    Đã được chỉnh sửa lần cuối bởi Ada : 09-01-2008 lúc 10:13 PM. Lý do: Edit 2

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Cảm ơn bạn nhiều, nhờ sự chỉ giáo của bạn mình cũng hiểu được hơn. Nhưng để áp dụng cụ thể vào bài đó thì ta phải dùng ma trận nào nhân với ma trận nào để cho ra kết quả cuối cùng? Bạn có thể trả lời câu hỏi của mình không?

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Cả 3 bài trên đều có thể giải trực tiếp (dựa vào 3 điểm và ảnh của chúng). Nhưng nếu bạn muốn giải bằng cách phân tích thành tích các phép biến hình đơn giản thì có thể làm như sau.

    Hình tròn biến thành ellipse: đặt hình tròn ở gốc tọa độ rồi co giãn 1 tọa độ.

    Hình vuông biến thành hình chữ nhật: đặt hình vuông ở gốc tọa độ sao cho cạnh của nó song song với trục tọa độ, rồi cũng co giãn 1 tọa độ như trên.

    Hình vuông biến thành hình bình hành: đặt 1 hình chữ nhật ở gốc tọa độ nhưng các cạnh không song song với trục tọa độ, rồi co giãn 1 tọa độ.

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Lời giải cho bài đường tròn biến thành ellipse, trong trường hợp tiền ảnh và ảnh có độ lớn, tư thế và vị trí bất kỳ.

    Dữ kiện: đường tròn C, ellipse E.

    Cần tìm: phép biến đổi T biến C thành E.

    Ta phân tích T thành tích các phép biến đổi đơn giản, như sau.

    T1 = tịnh tiến C để thu được đường tròn C' ≡ C có tâm trùng với gốc tọa độ. Bây giờ ta xem C' như một ellipse có hai bán trục hướng theo phương Ox và Oy và có cùng độ dài (bằng độ dài bán kính của C).

    T2 = co giãn tọa độ x, để C' biến thành ellipse C'' có độ dài bán trục hướng theo phương Ox bằng độ dài một bán trục nào đó của E.

    T3 = co giãn tọa độ y, để C'' biến thành ellipse C''' có độ dài bán trục hướng theo phương Oy bằng độ dài bán trục còn lại của E. Bây giờ C''' ≡ E, chỉ sai khác tư thế và vị trí.

    T4 = quay C''' quanh gốc tọa độ (cũng chính là tâm của nó) để bán trục dài (hay ngắn) của nó cùng phương với bán trục dài (hay ngắn) của E, được C'''' ≡ E, chỉ sai khác vị trí.

    T5 = tịnh tiến C'''' để tâm của nó biến thành tâm của E, được C''''' = E.


    Phép biến đổi cần tìm là

    T = T1 o T2 o T3 o T4 o T5

    Và ma trận của nó là

    [T] = [T1]*[T2]*[T3]*[T4]*[T5].



    Chú ý ký hiệu:

    A = B ký hiệu hai hình A và B trùng nhau.

    A ≡ B ký hiệu hai hình A và B bằng nhau, tức là chỉ sai khác nhiều nhất ở tư thế và vị trí, A có thể biến thành B nhờ một phép dời hình (tịnh tiến, quay và lật).
    Đã được chỉnh sửa lần cuối bởi Ada : 10-01-2008 lúc 09:23 AM. Lý do: Edit 5 -- đổi tên các hình

  6. #6
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Mặc định Ma trận các phép biến đổi trong đồ họa máy tính.

    Cảm ơn bạn Ada!!!

    Bạn cho mình hỏi thêm: giả sử ta có phương trình đường tròn x2 + y2 =R2thì làm cách nào để biết ma trận của đường tròn này?

    Vui lòng không gửi nhiều bài viết liên tiếp, liền nhau trong cùng một đề tài. (Dreaminess)

  7. #7
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    360

    Ma trận biểu diễn phép biến hình chứ không biểu diễn hình một cách trực tiếp. Bạn có thể dùng ma trận để nhớ các điểm đặc biệt của một hình, tức là cũng có thể xem như một lối "biểu diễn" hình một cách gián tiếp, như sau.

    Một véc-tơ biểu diễn 1 hình đơn giản nhất: 1 điểm.

    Nhờ đó, một đoạn thẳng ab trong P^1 có thể biểu diễn bằng ma trận [a,b], một tam giác abc trong P^2 có thể biểu diễn bằng ma trận [a,b,c], một tứ diện abcd trong P^3 có thể biểu diễn bằng ma trận [a,b,c,d]. Xem chú ý quy ước về ký hiệu [a,b,c] mình đã viết ở một bài trước.

    Nhờ đó, một đường tròn trong P^2 có thể được biểu diễn bằng ma trận [a,b,c], trong đó a,b,c là 3 điểm đôi một khác nhau trên đường tròn.
    Đã được chỉnh sửa lần cuối bởi Ada : 10-01-2008 lúc 10:00 AM.

  8. #8
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Mọi vấn đề đã sáng sủa hơn. Thanks!

  9. #9
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Bạn có tài liệu nào về môn ĐHMT này không, giới thiệu cho mình với.

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

    giúp mình với
    A(1,1)
    B(3,1)
    C(1,4)
    E(4,1)
    F(6,1)
    G(4,4)
    tìm ma trận biến đổi tam giac ABC thanh tam giac EFG

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

  1. Chuyển dữ liệu từ textbox vào biến ma trận trong C#?
    Gửi bởi eya_storm trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 06-04-2011, 08:12 PM
  2. miêu tả tình trạng của Queue trong biến đổi 1 số từ hệ 10 sang hệ 2
    Gửi bởi mrduc_pc 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: 01-04-2011, 01:50 AM
  3. Database Làm sao biết câu select trả về giá trị Null trong C#
    Gửi bởi small_ant trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 06-03-2011, 03:11 PM
  4. Biến trả lấy giá trị trả về trong Stored Procedure
    Gửi bởi iamonlining trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 6
    Bài viết cuối: 16-12-2009, 05:24 PM

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