算法如下:
Step1.对于屏幕上任意像素点p,分别计算出p到n个生成元p1,p2,p3,p4....pn的Power距离。
Step2.从这n个Power距离中,取出最小值和次最小值。如果这两个Power距离之差的绝对值小于事先指定的某阈值,便将该点p画出,否则跳过该像素点,处理下一个像素点。当p从上到下,从左到右遍历屏幕上所有像素点,便得到Power图
其中,生成元p1,p2,p3,p4....pn的坐标已知。
power距离d = (m ^ 2 - xi ^ 2 + n ^ 2 - yi ^ 2 - wi),其中,(m,n)是任意点p的坐标,(xi,yi)为已知点pi的坐标,wi为该已知点权重,是已知量。

解决方案 »

  1.   

    For m = -ScaleWidth / 2 To ScaleWidth / 2
       For n = 0 To ScaleHeight
         For i = 0 To 11
                d(i) = (m ^ 2 - x(i) ^ 2 + n ^ 2 - y(i) ^ 2 - w(i))
            Next i
        For j = 0 To 11
         For k = 0 To 11 - j
         If d(k) > d(k + 1) Then
         t = d(k)
         d(k) = d(k + 1)
         d(k + 1) = t
         End If
         Next k
         Next j
        If d(1) - d(0) < 5 Then
        PSet (m, n), vbBlack
        End If
     Next n
    Next m
    这是我自己写的,运行不出来,哪位大大帮我看看有什么问题啊。
      

  2.   

    For m = 0 To ScaleWidth
        For n = 0 To ScaleHeight
            For i = 0 To 11
                d(i) = (m ^ 2 - x(i) ^ 2 + n ^ 2 - y(i) ^ 2 - w(i))
            Next i
            
            For j = 0 To 11
                For k = 11 To j Step -1
                    If d(k) > d(j) Then
                        t = d(k)
                        d(k) = d(j)
                        d(j) = t
                    End If
                Next k
            Next j
            
            If d(1) - d(0) < 5 Then
                PSet (m, n), vbBlack
            End If
        Next n
    Next m