visual basic 直线和圆的位置关系

Private Sub Command1_Click()
    Dim radii As Double
    radii = 10
    Circle (70, 70), 10, vbRed
    Line (100, 100)-(190, 90)
    Dim lineDis As Double, lineA As Double, lineB As Double
    lineDis = wss(100, 100, 190, 90)
    lineA = wss(100, 100, 70, 70)
    lineB = wss(190, 90, 70, 70)
    Dim p As Double, lineCen As Double
    p = (lineA + lineB + lineDis) / 2
    lineCen = Sqr(p * (p - lineA) * (p - lineB) * (p - lineDis)) * 2 / lineDis
    If lineCen >= radii Then
        Label1.Caption = "计算结果:相离"
    Else
        Label1.Caption = "计算结果:相交、相切"
    End If
End Sub
Function wss(ox As Double, oy As Double, tx As Double, ty As Double) As Double '求平面空间直线长度
    wss = Sqr(Abs((ox - tx) * (ox - tx) + (oy - ty) * (oy - ty)))
End Function



360截图16280722335450.png

MemoryLine 随机地图算法

随机地图的理解

Cocos2dx引擎写游戏的话,多数情况下是在类似画布的场景中去添加精灵。MemoryLine游戏定位的时候是一款类似一笔画的游戏,然而我想让游戏无穷话,所以就不能按照一笔画那种地图模式,而是不断的根据关卡数形成新的地图。这涉及到了随机。

我的随机

一开始没有理解怎么在一张空白的画布上面随机的布置点位,让点不重叠,互相有一定间隔。如果按照普通的随机,那么随着关卡数的增加,随着点数的增加,重叠的几率也会相应的增加。所以我想了下面这个方式来解决随机带来的一些问题。


如何看待地图

对于MemoryLine的游戏地图,我认为它是一张白色的画布。


1.png


这张白色的画布是由无数个点组成的。因为图像就是由一个个像素点组成的,只不过密集程度不一样。所以这里我把这个密集程度放大了一定倍率。变成了下面的图。


2.PNG


方格化了这张图。那么我在定位上平面坐标。就可以比较准确的定位每个方格的位置。随机的时候就可以根据方格来随机,于是就可以进行不重复且有一定间隔的填充。


4.png