How to get rotation around axis?

Environment: Microstation V8i SS4, 08.11.09.833

Following situation:

I have got a polygon that represents the half of a double pitch roof (saddle roof). The pictures below show the polygon and a 3D-view of the roof as well:

Now I need to place a beam onto the polygon so that the beam is lying "flush" (hope that this expression is okay here ...)  - the next picture shows the beam as it should be in red:

Unfortunately the beam is placed like the green rectangle ...

The beam is placed by supplying a start and an end point. Moreover you can specify a rotation angle to rotate the beam along the axis.

The green rectangle is constructed with 0° rotation angle - the red one has got an angle of 23,3121°.

Unfortunately I am not able to find a way how to calculate the correct rotation.

I have got the following details:

  • slope angle
  • angle of the slant edge
  • width of the roof
  • width, length, height of the beam

I have attached a .dgn-file that shows the situation ...

Test_2.dgn

Does anyone have a clue how to calculate the rotation angle of the beam?

I am running out of ideas ...

Parents
  • Unknown said:

    I have got the following details:

    • slope angle
    • angle of the slant edge
    • width of the roof
    • width, length, height of the beam

    When dealing with 3D geometry, work with vectors, transformations and matrices.  MicroStation VBA is well furnished with methods that operate on a variety of 3D data types, including Vector3d, Transform3d, Matrix3d and others

    Use linear algebra to perform 3D manipulations and calculations.  Convert to angles and linear metrics for human consumption when you've finished the 3D stuff.

     
    Regards, Jon Summers
    LA Solutions

  • Well - I found a way how to achieve my goal ...

    My main issue was that I was not able to good sketch.

    Here's my way to find the rotation angle ...



    I have got the following details available:

    length blue line (= length)
    Angle between red and yellow line (= A)
    Angle between grey and blue line (= B = 90 - A)
    Angle between the pink continous lines (= C)

    To search: Angle between grey and brown line (= X)

    First I calculate the length of the grey line:  length / COS(90 - C) (= length grey)

    Next I calculate the length of the red line (between the intersection points with the yellow and the lightblue lines): length grey * SIN(90 - C) (= length red)

    Now the length of the lightblue line: length red * SIN(A) (= length lightblue)

    And now it's possible to calculate the angle X: ARCSIN(length lightblue / length grey)


    It's really simple in the end - as soon as you have got a useful sketch ...

    Answer Verified By: quasi_modo 

Reply
  • Well - I found a way how to achieve my goal ...

    My main issue was that I was not able to good sketch.

    Here's my way to find the rotation angle ...



    I have got the following details available:

    length blue line (= length)
    Angle between red and yellow line (= A)
    Angle between grey and blue line (= B = 90 - A)
    Angle between the pink continous lines (= C)

    To search: Angle between grey and brown line (= X)

    First I calculate the length of the grey line:  length / COS(90 - C) (= length grey)

    Next I calculate the length of the red line (between the intersection points with the yellow and the lightblue lines): length grey * SIN(90 - C) (= length red)

    Now the length of the lightblue line: length red * SIN(A) (= length lightblue)

    And now it's possible to calculate the angle X: ARCSIN(length lightblue / length grey)


    It's really simple in the end - as soon as you have got a useful sketch ...

    Answer Verified By: quasi_modo 

Children
No Data