【VB6.0】极坐标系转垂直坐标系源码

哈里最近写了一下垂直坐标系转极坐标系的源码。

过程大概是求圆的方程与直线交点坐标,从而得到极坐标系到垂直坐标系的位置。逆过程暂时不需要所以没有写。

建立一个模块,命名为:极坐标运算模块。

模块内码入如下代码:

Public Type 二维坐标
    X As Double
    Y As Double
    End Type

Public Const 一弧度 = 0.0174532925, PI = 3.14159265, TAU = 6.2831853

Public Function 极坐标转垂直(ByVal r As Double, ByVal a As Double, Optional 角度 As Boolean = True) As 二维坐标

    'r 半径;a 角度;角度 true代表角度,false代表弧度

    Dim tana As Double, rSqr1tana2 As Double '缓存数值,加快运算

    If 角度 Then
        a = a * 一弧度
    End If

    a = a - a \ TAU * TAU '将周期收拢到一个基本周期内,方便下面的象限判断

    tana = Tan(a)
    rSqr1tana2 = r / Sqr(1 + tana ^ 2)

    If a <= PI Then
        极坐标转垂直.X = rSqr1tana2
        极坐标转垂直.Y = rSqr1tana2 * tana
    Else
        极坐标转垂直.X = -rSqr1tana2
        极坐标转垂直.Y = -rSqr1tana2 * tana
    End If

End Function

调用如下(假设我要在窗体Form1上,圆心为(3000,3000)的地方绘制一个半径1000的圆,方法装在按钮Command1中):

Private Sub Command1_Click()

    Dim i As Single, p As 二维坐标
    
    For i = 0.1 To 360 Step 0.1
        p = 极坐标转垂直(1000, i)
        Me.PSet (3000 + p.X, 3000 + p.Y), 255
    Next
    
End Sub

效果如下:

不过貌似思路有些复杂了,简化的模块代码如下:

Public Type 二维坐标
    X As Double
    Y As Double
    End Type

Public Const 一弧度 = 0.0174532925

Public Function 极坐标转垂直(ByVal r As Double, ByVal a As Double, Optional 角度 As Boolean = True) As 二维坐标

    'r 半径;a 角度或弧度;角度 true代表角度false代表弧度

    If 角度 Then
        a = a * 一弧度
    End If

    极坐标转垂直.X = Cos(a) * r
    极坐标转垂直.Y = Sin(a) * r
    
End Function

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值