VBA Рассчитать угол относительно графика - PullRequest
1 голос
/ 26 августа 2011

На прошлой неделе я пытался вычислить угол между тремя точками -сначала мне нужно было набрать очки = легкочем вычислять угол (не относительно) = слишком просто

и теперь мне нужно получить угол относительно графика - проблема в том, что я не знаю как (я уверен, что это тоже легко).

PI = 3.141592654А (2004,227)Б (2005,18)C (2006,25)

Вот функция / формула для вычисления угла>

arctan((Xb - Xa)/(Ya - Yb)) * (180/PI) + arctan((Xc - Xb)/(Yc - Yb))  * (180/PI)

Что мне нужно добавить к формуле, чтобы она была относительно графика?(Я тоже хочу объяснение, пожалуйста)

Вот график: enter image description here

Большое спасибо!

1 Ответ

2 голосов
/ 26 августа 2011

Редактировать : Вот полный код моего сабвуфера для его вычисления.

Public Sub Question()

Dim Pi As Double
Pi = 3.141592654
Dim myChart As ChartObject

For Each myChart In ActiveSheet.ChartObjects
    Dim xLength As Double
    Dim yLength As Double
    xLength = myChart.Chart.Axes(1).MaximumScale - myChart.Chart.Axes(1).MinimumScale
    yLength = myChart.Chart.Axes(2).MaximumScale - myChart.Chart.Axes(2).MinimumScale

    xLength = xLength / myChart.Chart.PlotArea.Width
    yLength = yLength / myChart.Chart.PlotArea.Height

    Dim goodScale As Double
    goodScale = xLength / yLength

    Dim v1x As Double
    Dim v1y As Double
    Dim v2x As Double
    Dim v2y As Double
    Dim Angle As Double

    v1x = 2005 - 2004
    v1y = 18 - 227

    v2x = 2006 - 2005
    v2y = 25 - 18

    v1y = v1y * goodScale
    v2y = v2y * goodScale

    Angle = (Atn(v2x / v2y) - Atn(v1x / v1y)) * (180 / Pi)
Next
End Sub

Вы заметите, что я жестко закодировал точки в сабвуфере, но это простомаленький самодостаточный код.

...