开发者

VBA Calculate angle relative to graph

开发者 https://www.devze.com 2023-03-31 15:33 出处:网络
In the last week I tried to calculate angle between three points - first I needed to get the points = easy

In the last week I tried to calculate angle between three points -

first I needed to get the points = easy

than to calculate the angle (not relatively) = easy too

and now I need to get the angle relative to the graph - the problem is that I dont know how (I am sure this is easy too).

PI = 3.141592654

A(2004,227)

B(2005,18)

C(2006,25)

Here's the function/formula to calculate the Angle >

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

What do I need to add to the formula so it 开发者_JS百科will be relatively to the graph? (I want an explanation too please)

Here's the graph:

VBA Calculate angle relative to graph

Thank you very much!


Edit : Here is the full code of my sub to compute it.

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

You'll notice I hardcoded the points in the sub, but that's just to have a small self-sufficient code.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号