zoukankan      html  css  js  c++  java
  • 小马算法

    gen_rectangle2_contour_xld (Rectangle4, Row, Column, Phi, Length1, Length2)
     
    tuple_cos (Phi, Cos)
    tuple_sin (Phi, Sin)
     
    dev_set_color('green')
    RT_X := -Length1*Cos - Length2*Sin
    RT_Y := -Length1*Sin + Length2*Cos
    gen_circle (Circle, Row-RT_Y, Column+RT_X, 10)
     
    RB_X := Length1*Cos - Length2*Sin
    RB_Y := Length1*Sin + Length2*Cos
    gen_circle (Circle, Row-RB_Y, Column+RB_X, 10)
     
    LB_X := Length1*Cos + Length2*Sin
    LB_Y := Length1*Sin - Length2*Cos
    gen_circle (Circle, Row-LB_Y, Column+LB_X, 10)
     
    LT_X := -Length1*Cos + Length2*Sin
    LT_Y := -Length1*Sin - Length2*Cos
    gen_circle (Circle, Row-LT_Y, Column+LT_X, 10)
    
    
    其中RT_X, RT_Y, RB_X, RB_Y, LB_X, LB_Y, LT_X, LT_Y求出的是距中心点的偏移量
    顶点坐标可通过与矩形的中心坐标加减得到
    如上面的函数gen_circle 

    利用坐标旋转,最终得到想要的结果

    个可以通过如下原理的方法来求:
    中心为(Row,Col),长半轴为width,短半轴为height。先将矩形顶点坐标换算到水平时候的坐标,中心点位置不变。为A(Row- width,Col-height),B(Row+width,Col-height),C(Rol- width,Col+height),D(Rol+width,Col+height)
    然后将A,B,C,D点坐标进行一个theta角度的旋转变换就是你所求的四个顶点的坐标

  • 相关阅读:
    UVa 107 The Cat in the Hat
    UVa 591 Box of Bricks
    UVa 253 Cube painting
    UVa 10161 Ant on a Chessboard
    UVa 401 Palindromes
    UVa 465 Overflow
    我不知道
    消防局的设立
    某CF的D
    保安站岗
  • 原文地址:https://www.cnblogs.com/tmdsleep/p/5473518.html
Copyright © 2011-2022 走看看