投稿者 るきお  (社会人) 投稿日時 2010/5/24 22:53:00
こんにちは。

2つの画像の位置関係がやっぱりわからないです。

一応仮のもので作ろうと思ったのですが、数学の知識がさびついていてうまい具体に座標が計算できませんでした。とりあえず、座標はずれますが孤上にPictureboxが移動する例です。
PictreBox2個とButton1個をフォームに貼りつけて試してみてください。

  
Public Class Form1

    Dim center As Point
    Dim radius As Double

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 100
    End Sub
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        ImageCircle(Me.RectangleToScreen(PictureBox1.DisplayRectangle), Me.RectangleToScreen(PictureBox2.DisplayRectangle))
        Timer1.Enabled = True
    End Sub

    Private Sub ImageCircle(ByVal rect1 As Rectangle, ByVal rect2 As Rectangle)

        center = ((rect2.Location) - (rect1.Location))
        center.X /= 2
        center.Y /= 2

        radius = CalcDistance(rect1.Location, center)
        startDeg = Math.Tan((center.Y - rect1.Top) / (center.X - rect1.Left))

    End Sub

    Private Function CalcDistance(ByVal pos1 As Point, ByVal pos2 As Point) As Double

        Dim Kou As Double = pos2.X - pos1.X
        Dim Ko As Double = pos2.Y - pos1.Y
        Dim Gen As Double

        Gen = Math.Sqrt(Kou ^ 2 + Ko ^ 2)

        Return Gen

    End Function

    Dim tick As Integer
    Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Timer1.Tick

        tick += 1
        PictureBox1.Location = ClacPoint(tick)

    End Sub

    Dim startDeg As Double

    Const MoveUnit As Double = (Math.PI * 2) / 360

    Private Function ClacPoint(ByVal tick As IntegerAs Point

        Dim deg As Double = startDeg - (tick * MoveUnit)
        Dim x As Integer
        Dim y As Integer

        x = radius * (Math.Cos(deg)) + center.X
        y = radius * (Math.Sin(deg)) + center.Y

        Me.Text = deg & "(" & x & "," & y & ")"
        Return New Point(x, y)

    End Function

    
End Class


たぶん、象限ごとに座標計算をわけなければいけないのか、Y軸が下方向がプラスという感覚がおかしくなっているのか、ともあれ、この手のプログラムの問題のほとんどは数学上の座標計算であって、プログラムの機能的には特に難しくありません。

なお、この場合の座標計算は私の仮定上では以下の問題の解に帰着します。

問い
XY座標平面上に長方形Rect1と長方形Rect2がある。
ただし、この座標平面ではY軸は下側がプラスで上側がマイナスである。
Rect1の左上の頂点をPos1、Rect2の左上の頂点をPos2とするとき、線分Pos1・Pos2を直径とする円を考える。
その円周上を動点がPos1からPos2までt秒かけて移動するとき、s秒後のこの動点の座標を求めよ。

この答えがだせればプログラムも完成すると思います。
くらうどさん、解けますか?