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

Đề tài: Tìm điều kiện cho phép zoom bản vẽ kỹ thuật

  1. #1
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    744

    Mặc định Tìm điều kiện cho phép zoom bản vẽ kỹ thuật

    Chả phải thuật toán gì ghê gớm, chỉ là một bài toán trẻ con thôi. Nhưng tình cờ, gần đây mình xem bản vẽ kỹ thuật bằng một app trên điện thoại di động và nhận thấy app ấy vẫn chưa sạch lỗi: nó không cho phép ánh xạ điểm bất kỳ của bản vẽ vào tâm màn hình (cửa sổ hiển thị). Ví dụ, nếu mình muốn xem một ký hiệu gì đó ở góc dưới bên phải của bản vẽ thì dù mình có kéo, zoom in/out thế nào, ký hiệu ấy cùng lắm cũng chỉ ở quanh quẩn đâu đó ở góc dưới bên phải của màn hình. Đó là lỗi đặc tả yêu cầu, thiết kế giao diện, chứ không phải là lỗi lập trình. Một lỗi trẻ con, nhưng khó chịu vô cùng.

    Thế nên phải lôi bài toán trẻ con này ra. Mời các bạn giải chơi.

    Bài toán. Trong một phần mềm xem bản vẽ kỹ thuật, mọi động tác hiển thị đều phải được lập trình sao cho tâm màn hình (cửa số hiển thị) luôn nằm trong bản vẽ. Động tác Zoom(P,k) có tác dụng phóng to bản vẽ lên k lần quanh điểm cố định P. (Nếu k < 1 thì thu nhỏ bản vẽ k lần. Điểm P và tỷ số k thường do người dùng chỉ định, chẳng hạn bằng con chuột có bánh xe lăn.) Hãy xác định điều kiện cho phép thực hiện động tác hiển thị này.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    744

    Lời giải (sơ lược.) Gọi T là tâm cửa sổ hiển thị, (α) và (β) lần lượt là bản vẽ trước và sau khi Zoom(P,k). Là một phép vị tự xuyên tâm P và tỷ số k, phép Zoom(P,k) biến (α) thành (β) và biến một điểm S nào đó trong mặt phẳng thành T. Nhận xét rằng 3 điểm P, S, T thẳng hàng. Từ PT/PS = k, dễ dàng suy được TP/TS = n với 1/n + 1/k = 1. Vậy, P là ảnh của S qua phép vị tự xuyên tâm T với tỷ số n.

    Yêu cầu T nằm trong (β) tương đương với yêu cầu S nằm trong (α). Quỹ tích của điểm P khi điểm S chuyển động trong (α) (trong khi điểm T cố định) là (γ), ảnh của (α) qua phép vị tự sau này. Vậy, động tác Zoom(P,k) sẽ được phép thực hiện khi và chỉ khi điểm P nằm trong (γ).

    Nói thêm, để dễ tưởng tượng, dù không nhất thiết, có thể giả thiết "bản vẽ" là một đường cong khép kín không tự cắt hoặc cụ thể hơn nữa, một hình chữ nhật.

    Chú ý là mọi hình, mọi phép biến hình ở đây đều được xác định trong hệ quy chiếu của cửa sổ hiển thị. (Đương nhiên rồi, bởi vì Zoom() là một động tác hiển thị chứ không phải là một động tác biên tập. Nó chỉ thay đổi hình thức của bản vẽ trên màn hình, bảo toàn nội dung bản vẽ. Trong hệ quy chiếu của bản vẽ, nó không có tác dụng nào cả.)
    Đã được chỉnh sửa lần cuối bởi Ada : 13-02-2022 lúc 01:53 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