Thánh toán đâu rồi ???? Vào giúp mình bài toán này với :)

Thảo luận trong 'World Editor' bắt đầu bởi langthangbairac, 23/4/13.

  1. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Tình hình là tuần này mình đã bắt đầu làm việc lại với WE. Tiếp tục project Võ lâm, hiện tại thì cũng chưa đâu vào đâu cả nhưng vẫn hi vọng là map sẽ ra vào hè năm này :9cool_haha:

    Vấn đề chính bây giờ là mình cần các bạn giúp mình giải bài toán này, nghĩ mãi cả buổi sáng mà vẫn không ra, có lẽ gà quá :))
    Cho một khung ABCD hình vuông, Một điểm M ngẫu nhiên nằm trong hình vuông ABCD. Biết đoạn AM = a. Tính các đoạn XA, XM ( hình vẽ bên dưới )
    [spoil]
    [​IMG]
    [/spoil]


    Dùng bất cứ phương pháp nào có thể :) Trình bày bằng phương pháp trong we hoặc bằng phưuong pháp toán học cũng được

    ( coi các điểm A,B,C,D,X,Y.M là các position ).

    Cảm ơn trước !!!!!!!!!!
     
    Chỉnh sửa cuối: 23/4/13
  2. KuKulKan

    KuKulKan T.E.T.Я.I.S

    Tham gia ngày:
    2/8/09
    Bài viết:
    629
    Nơi ở:
    Quận Thủ Đức, Thành phố Hồ Chí Minh
    Nếu đã coi các điểm A X M là các posittion thì nó đã là 1 tọa độ (x,y).

    Vậy thì dùng công thức tính khoảng cách giữa 2 tọa độ là ra mà.

    ví dụ AX = Squareroot( (xA - xX)*2 + (yA - yX)*2 )

    :-?
     
  3. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    chả hiều gì hết trơn :| cái này mới thấy lần đầu :(
     
  4. Tom_Kazansky

    Tom_Kazansky Thành viên BQT Moderator

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    thế này thì liên quan gì đến B, C, D ?

    bài này là "tính 2 cạnh bên của hình vuông khi biết cạnh huyền", mà như thế này sao tính? ít nhất phải cho góc MAY chứ?
     
  5. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    thế theo trong we thì không thể tính được à?

    p/s: Nếu biết góc MAY thì em post lên đây làm gì nữa anh TOM :(
     
    Chỉnh sửa cuối: 23/4/13
  6. xitrumvotinh

    xitrumvotinh T.E.T.Я.I.S

    Tham gia ngày:
    26/12/08
    Bài viết:
    616
    theo mình thấy thì điểm M ko cố định nên không thể nào giải ra được đoạn XA, XM
     
  7. Tom_Kazansky

    Tom_Kazansky Thành viên BQT Moderator

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    ủa, thế điểm M lấy thế nào? tự nhiên có hay sao?

    nói rõ từ đầu: làm thế nào có ABCD, làm thế nào có M để rồi phải tính XM, YM
     
    Chỉnh sửa cuối: 23/4/13
  8. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    M ngẫu nhiên trong ABCD :D anh Tom chắc giỏi toán lắm nhỉ:9cool_sweet_kiss:
     
  9. Tom_Kazansky

    Tom_Kazansky Thành viên BQT Moderator

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    M ngẫu nhiên nhưng là do mình lấy hay nguồn khác, ví dụ như đột nhiên unit U nhảy vào ABCD, lấy đc M là vị trí của U, tính MX, MY?

    thôi thế này, theo hình vuông trên thì:

    AB song song trục Y
    AD song song trục X

    M( xM, yM) // xM, yM là tọa độ x,y của M
    A( xA, yA)

    AN = | xM - xA |
    AO = | yM - yA |

    X ( xA, yM )
    Y ( xM, yA )

    xong chưa?

    p.s: toán của tôi chỉ trên trung bình một chút thôi :-j
     
  10. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    uầy. điểm O với N ở đâu ra thế ???
     
  11. Tom_Kazansky

    Tom_Kazansky Thành viên BQT Moderator

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    chết, N và O là X và Y trên kia, quên ko ghi vào

    lúc đầu tính ghi xX, yY nhưng sợ nhầm nên sửa thành O, N :6cool_beat_brick:
     
  12. KuKulKan

    KuKulKan T.E.T.Я.I.S

    Tham gia ngày:
    2/8/09
    Bài viết:
    629
    Nơi ở:
    Quận Thủ Đức, Thành phố Hồ Chí Minh
    Vậy thì ABCD hình thành trước khi có M, vậy phải biết được tọa độ của 4 điểm A B C D chứ bạn. Không thì làm sao bạn biết nó là hình vuông ?

    Nếu như dữ kiện mà bạn đưa ra như trên chỉ có M và đoạn AM = a thì không tính được cái gì đâu ^^
     
  13. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Hình như sai 100% rồi thì phải
     
  14. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Bải của anh Tom chỉ đúng khi AB // Oy và AD // Ox thôi
     
  15. xitrumvotinh

    xitrumvotinh T.E.T.Я.I.S

    Tham gia ngày:
    26/12/08
    Bài viết:
    616
    mình có thể đặt nó vào hệ trục tóa độ thì xét về logic bài tom vẫn đúng chứ
     
  16. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Để tối về ngâm cứu lại đã :D có thể đúng cũng nên
     
  17. LeoNguyen112

    LeoNguyen112 Dragon Quest

    Tham gia ngày:
    22/5/10
    Bài viết:
    1,438
    Nơi ở:
    TP.HCM
    Tôi làm theo kiểu vector, hơi dài dòng nhưng chính xác với mọi hình vuông ABCD.

    • A( a[SUB]1[/SUB] ; a[SUB]2[/SUB] )
    • B( b[SUB]1[/SUB] ; b[SUB]2[/SUB] )
    • M( m[SUB]1[/SUB]; m[SUB]2[/SUB] )

    Ta có vector AB = ( b[SUB]1[/SUB] - a[SUB]1[/SUB] ; b[SUB]2[/SUB] -a[SUB]2[/SUB] )
    Phương trình qua AB sẽ là: (a[SUB]2[/SUB] - b[SUB]2[/SUB]) * (x - a[SUB]1[/SUB]) + (b[SUB]1[/SUB] - a[SUB]1[/SUB]) * (y - a[SUB]2[/SUB]) = 0
    Tức sẽ bằng: x * (a[SUB]2[/SUB] - b[SUB]2[/SUB]) + y * (b[SUB]1[/SUB] - a[SUB]1[/SUB]) + a[SUB]1[/SUB]*b[SUB]2[/SUB] - a[SUB]2[/SUB]*b[SUB]1[/SUB] = 0

    Độ dài MX sẽ bằng:
    |m [SUB]1[/SUB] *(a [SUB]2[/SUB] - b [SUB]2[/SUB] ) + m [SUB]2[/SUB] * (b [SUB]1[/SUB] - a [SUB]1[/SUB] ) + a[SUB]1[/SUB]*b[SUB]2[/SUB] - a[SUB]2[/SUB]*b[SUB]1[/SUB]|
    ------------------------------------------------------ <= dấu chia nhá
    ______căn bậc 2 của [(a[SUB]2[/SUB] - b[SUB]2[/SUB])[SUP]2[/SUP] + (b[SUB]1[/SUB] - a[SUB]1[/SUB])[SUP]2[/SUP]]
    Và chuyển thành code WE sẽ là:
    Mã:
            Set a1 = (X of A)
            Set a2 = (Y of A)
            Set b1 = (X of B)
            Set b2 = (Y of B)
            Set m1 = (X of M)
            Set m2 = (Y of M)
            Set Real[1] = ((a2 - b2) x m1)
            Set Real[2] = ((b1 - a1) x m2)
            Set Real[3] = ((a1 x b2) - (a2 x b1))
            Set Real[4] = ((a2 - b2) x (a2 - b2))
            Set Real[5] = ((b1 - a1) x (b1 - a1))
            Set Real[6] = (Abs(((Real[1] + Real[2]) + Real[3])))
            Set Real[7] = (Square root((Real[4] + Real[5])))
            Set Real[8] = (Real[6] / Real[7])
    Ta được Real[8] = MX. Tương tự với AX:

    Mã:
            Set a1 = (X of A)
            Set a2 = (Y of A)
            Set d1 = (X of D)
            Set d2 = (Y of D)
            Set m1 = (X of M)
            Set m2 = (Y of M)
            Set Real[1] = ((a2 - d2) x m1)
            Set Real[2] = ((d1 - a1) x m2)
            Set Real[3] = ((a1 x d2) - (a2 x d1))
            Set Real[4] = ((a2 - d2) x (a2 - d2))
            Set Real[5] = ((d1 - a1) x (d1 - a1))
            Set Real[6] = (Abs(((Real[1] + Real[2]) + Real[3])))
            Set Real[7] = (Square root((Real[4] + Real[5])))
            Set Real[8] = (Real[6] / Real[7])
    Demo Map: Click here!
    Demo chỉ có tìm MX thôi, vì... lười. Nhưng đảm bảo X tìm được luôn nằm trên AB >:D<

    [TABLE="class: outer_border, width: 600"]
    [TR]
    [TD]Edit tí: khi tìm được MX rồi thì dùng sin, cos, tan để tính AX sẽ nhanh hơn. Cụ thể:
    cosXMA = sinXAM = MX / MA
    => Tìm được góc XMA và XAM
    => AX = XM/tan(XAM)[/TD]
    [/TR]
    [/TABLE]
     
    Chỉnh sửa cuối: 23/4/13
  18. langthangbairac

    langthangbairac T.E.T.Я.I.S

    Tham gia ngày:
    19/5/12
    Bài viết:
    594
    Nơi ở:
    Thanh Chương
    Mình thử làm theo cách này không biết đúng không nhé :
    _ Chia hình vương ABCD ra làm nhiều hình, mỗi hình có độ dài 700x700 ( distance )
    _ Tìm giá trị độ dài từ M đến cạnh AB nhỏ nhất bằng For Loop
    _ Làm tương tự với các hình còn lại. Chỉ làm với hàng đầu tiên ( Đặt các giá trii này là Min1, Min2,....,Minn )
    _ Tìm giá trị nhỏ nhất của dãy Min1, Min2,....,Minn . ===> Giá trị nhỏ nhất là hình chiếu của M trên AB ==> Tìm được MX ===> Các cạnh còn lại :1cool_byebye:

    p/s: Mình lấy gần đúng thôi :) các bác xem rồi cho lời bình :D giờ phải đi học đã :3cool_nosebleed:
     

Chia sẻ trang này