How to save the angle

Get answers to your questions about color grading, editing and finishing with DaVinci Resolve.
  • Author
  • Message
Offline

Rezzimx

  • Posts: 598
  • Joined: Sun Jul 21, 2019 3:53 am
  • Real Name: Tymur Suleimanov

How to save the angle

PostTue Dec 06, 2022 11:27 am

Hi. Please tell me how to save the angle when changing the position of Point0 and Point3?

Right now it looks like this:
Image

I want it to look like this when Point0 and Point3 change their positions:
Image

Code: Select all
{
   Tools = ordered() {
      Pol = PolylineMask {
         DrawMode = "ModifyOnly",
         DrawMode2 = "InsertAndModify",
         NameSet = true,
         Inputs = {
            ShowViewControls = Input { Value = 0, },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.007, },
            CapStyle = Input { Value = 0, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, X = -0.05, Y = -0.4, RX = 0.0166666666666667, RY = 0, PublishID = "Point0" },
                     { Linear = true, X = 0, Y = -0.4, LX = -0.0166666666666667, LY = 0, RX = 0, RY = 0.266666666666667, PublishID = "Point1" },
                     { Linear = true, X = 0, Y = 0.4, LX = 0, LY = -0.266666666666667, RX = -0.0166666666666667, RY = 0, PublishID = "Point2" },
                     { Linear = true, X = -0.05, Y = 0.4, LX = 0.0166666666666667, LY = 0, PublishID = "Point3" }
                  }
               },
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
            Point3 = Input { Value = { 0.45, 0.9 }, },
            Point2 = Input {
               Value = { 0.5, 0.9 },
               Expression = "Point(Point3.X+0.05, Point3.Y)",
            },
            Point1 = Input {
               Value = { 0.5, 0.1 },
               Expression = "Point(Point0.X+0.05, Point0.Y)",
            },
            Point0 = Input { Value = { 0.45, 0.1 }, },
         },
         ViewInfo = OperatorInfo { Pos = { -318.004, 47.3634 } },
         Colors = { TileColor = { R = 0, G = 0.596078431372549, B = 0.6 }, },
         UserControls = ordered() {
            Point3 = {
               INP_DefaultX = 0.45,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.9,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 3",
            },
            Point2 = {
               INP_DefaultX = 0.5,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.9,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 2",
            },
            Point1 = {
               INP_DefaultX = 0.5,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.1,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 1",
            },
            Point0 = {
               INP_DefaultX = 0.45,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.1,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 0",
            }
         }
      },
      Background1_1 = Background {
         CtrlWZoom = false,
         Inputs = {
            EffectMask = Input {
               SourceOp = "Pol",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 59, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 0.298039215686275, },
            TopLeftBlue = Input { Value = 0.498039215686275, },
            BottomLeftRed = Input { Value = 1, },
            Start = Input {
               Value = { 0.5, 0.1 },
               Expression = "Point(Pol.Point1.X, Pol.Point1.Y)",
            },
            End = Input {
               Value = { 0.5, 0.9 },
               Expression = "Point(Pol.Point2.X, Pol.Point2.Y)",
            },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 0.913, 0, 1 },
                     [1] = { 0.882, 0, 1, 1 }
                  }
               },
            },
            GradientInterpolationMethod = Input { Value = FuID { "LAB" }, },
         },
         ViewInfo = OperatorInfo { Pos = { -209.343, 47.3634 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { -88.0104, 47.3634 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 59, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.835, },
            TopLeftGreen = Input { Value = 0.819, },
            TopLeftBlue = Input { Value = 0.866, },
         },
         ViewInfo = OperatorInfo { Pos = { -88.0104, 92.2119 } },
      }
   }
}
i7-9700k 4.3GHz, 32GB RAM, SSD 1TB M.2, SSD 512GB M.2, GTX 1650(4GB).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 2181
  • Joined: Wed Aug 22, 2012 7:48 am

Re: How to save the angle

PostTue Dec 06, 2022 4:37 pm

Tymur, you should be able to use trigonometry functions to calculate the x and y offsets for Point 0 and Point 3, maybe check a few math tutorials.

For example, you could use the atan function to calculate the angle of the line (Point 1 to Point 2), and use the sine and cosine rules to calculate the Point 0 and Point 3 x and y offsets.

Note: Bear that in mind that the Fusion coordinate space is normalised, so you'll prob need to adjust for the aspect ratio.
Offline

Rezzimx

  • Posts: 598
  • Joined: Sun Jul 21, 2019 3:53 am
  • Real Name: Tymur Suleimanov

Re: How to save the angle

PostTue Dec 06, 2022 4:55 pm

Andy Mees wrote:Tymur, you should be able to use trigonometry functions to calculate the x and y offsets for Point 0 and Point 3, maybe check a few math tutorials.

For example, you could use the atan function to calculate the angle of the line (Point 1 to Point 2), and use the sine and cosine rules to calculate the Point 0 and Point 3 x and y offsets.

Note: Bear that in mind that the Fusion coordinate space is normalised, so you'll prob need to adjust for the aspect ratio.


Thanks Andy.
I was sick at school when we studied this subject, so now I don't know cosine or sine.)
Yes I tried using atan2 and found another way to implement it. But I'm interested in how it can be implemented exactly the way I described. Unfortunately I sat all day and got stumped, so I decided to ask for help on the forum. Maybe someone will find it easy and will be able to help me.
i7-9700k 4.3GHz, 32GB RAM, SSD 1TB M.2, SSD 512GB M.2, GTX 1650(4GB).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 2181
  • Joined: Wed Aug 22, 2012 7:48 am

Re: How to save the angle

PostTue Dec 06, 2022 6:49 pm

Try something like this:
Code: Select all
{
   Tools = ordered() {
      Pol = PolylineMask {
         DrawMode = "ClickAppend",
         DrawMode2 = "InsertAndModify",
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            ShowViewControls = Input { Value = 0, },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.007, },
            CapStyle = Input { Value = 0, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, X = -0.05, Y = -0.2, RX = 0.0166666666666667, RY = 0, PublishID = "Point0" },
                     { Linear = true, X = 0, Y = -0.2, LX = -0.0166666666666667, LY = 0, RX = 0, RY = 0.133333333333333, PublishID = "Point1" },
                     { Linear = true, X = 0, Y = 0.2, LX = 0, LY = -0.133333333333333, RX = -0.0166666666666667, RY = 0, PublishID = "Point2" },
                     { Linear = true, X = -0.05, Y = 0.2, LX = 0.0166666666666667, LY = 0, PublishID = "Point3" }
                  }
               },
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
            Point3 = Input {
               Value = { 0.45, 0.7 },
               Expression = "Point(\nPoint2.X - abs(cos(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05),\nPoint2.Y + (sin(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05))",
            },
            Point2 = Input { Value = { 0.5, 0.7 }, },
            Point1 = Input { Value = { 0.5, 0.3 }, },
            Point0 = Input {
               Value = { 0.45, 0.3 },
               Expression = "Point(Point1.X - abs(cos(atan((Point2.X-Point1.X)/(Point2.Y-Point1.Y)))*0.05), Point1.Y + (sin(atan((Point2.X-Point1.X)/(Point2.Y-Point1.Y)))*0.05))",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 82.5 } },
         Colors = { TileColor = { R = 0, G = 0.596078431372549, B = 0.6 }, },
         UserControls = ordered() {
            Point3 = {
               INP_DefaultX = 0.45,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.9,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 3",
            },
            Point2 = {
               INP_DefaultX = 0.5,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.9,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 2",
            },
            Point1 = {
               INP_DefaultX = 0.5,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.1,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 1",
            },
            Point0 = {
               INP_DefaultX = 0.45,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.1,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 0",
            }
         }
      },
      Background1_1 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Pol",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 124, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1920, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 0.298039215686275, },
            TopLeftBlue = Input { Value = 0.498039215686275, },
            BottomLeftRed = Input { Value = 1, },
            Start = Input {
               Value = { 0.5, 0.3 },
               Expression = "Point(Pol.Point1.X, Pol.Point1.Y)",
            },
            End = Input {
               Value = { 0.5, 0.7 },
               Expression = "Point(Pol.Point2.X, Pol.Point2.Y)",
            },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 0.913, 0, 1 },
                     [1] = { 0.882, 0, 1, 1 }
                  }
               },
            },
            GradientInterpolationMethod = Input { Value = FuID { "LAB" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 82.5 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 449.994, 82.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 124, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.835, },
            TopLeftGreen = Input { Value = 0.819, },
            TopLeftBlue = Input { Value = 0.866, },
         },
         ViewInfo = OperatorInfo { Pos = { 449.994, 127.349 } },
      }
   }
}
Offline

Rezzimx

  • Posts: 598
  • Joined: Sun Jul 21, 2019 3:53 am
  • Real Name: Tymur Suleimanov

Re: How to save the angle

PostTue Dec 06, 2022 7:59 pm

Andy Mees wrote:Try something like this:
Code: Select all
{
   Tools = ordered() {
      Pol = PolylineMask {
         DrawMode = "ClickAppend",
         DrawMode2 = "InsertAndModify",
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            ShowViewControls = Input { Value = 0, },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.007, },
            CapStyle = Input { Value = 0, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, X = -0.05, Y = -0.2, RX = 0.0166666666666667, RY = 0, PublishID = "Point0" },
                     { Linear = true, X = 0, Y = -0.2, LX = -0.0166666666666667, LY = 0, RX = 0, RY = 0.133333333333333, PublishID = "Point1" },
                     { Linear = true, X = 0, Y = 0.2, LX = 0, LY = -0.133333333333333, RX = -0.0166666666666667, RY = 0, PublishID = "Point2" },
                     { Linear = true, X = -0.05, Y = 0.2, LX = 0.0166666666666667, LY = 0, PublishID = "Point3" }
                  }
               },
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
            Point3 = Input {
               Value = { 0.45, 0.7 },
               Expression = "Point(\nPoint2.X - abs(cos(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05),\nPoint2.Y + (sin(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05))",
            },
            Point2 = Input { Value = { 0.5, 0.7 }, },
            Point1 = Input { Value = { 0.5, 0.3 }, },
            Point0 = Input {
               Value = { 0.45, 0.3 },
               Expression = "Point(Point1.X - abs(cos(atan((Point2.X-Point1.X)/(Point2.Y-Point1.Y)))*0.05), Point1.Y + (sin(atan((Point2.X-Point1.X)/(Point2.Y-Point1.Y)))*0.05))",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 220, 82.5 } },
         Colors = { TileColor = { R = 0, G = 0.596078431372549, B = 0.6 }, },
         UserControls = ordered() {
            Point3 = {
               INP_DefaultX = 0.45,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.9,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 3",
            },
            Point2 = {
               INP_DefaultX = 0.5,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.9,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 2",
            },
            Point1 = {
               INP_DefaultX = 0.5,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.1,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 1",
            },
            Point0 = {
               INP_DefaultX = 0.45,
               INPID_PreviewControl = "PointControl",
               INP_DefaultY = 0.1,
               LINKID_DataType = "Point",
               ICS_ControlPage = "Controls",
               INPID_InputControl = "OffsetControl",
               LINKS_Name = "Point 0",
            }
         }
      },
      Background1_1 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Pol",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 124, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1920, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 0.298039215686275, },
            TopLeftBlue = Input { Value = 0.498039215686275, },
            BottomLeftRed = Input { Value = 1, },
            Start = Input {
               Value = { 0.5, 0.3 },
               Expression = "Point(Pol.Point1.X, Pol.Point1.Y)",
            },
            End = Input {
               Value = { 0.5, 0.7 },
               Expression = "Point(Pol.Point2.X, Pol.Point2.Y)",
            },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 0.913, 0, 1 },
                     [1] = { 0.882, 0, 1, 1 }
                  }
               },
            },
            GradientInterpolationMethod = Input { Value = FuID { "LAB" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 330, 82.5 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 449.994, 82.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 124, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.835, },
            TopLeftGreen = Input { Value = 0.819, },
            TopLeftBlue = Input { Value = 0.866, },
         },
         ViewInfo = OperatorInfo { Pos = { 449.994, 127.349 } },
      }
   }
}


Wow! How did you do that. That's awesome.
Can you make it so it doesn't flip? (if we change Point3.Y=618 | Point3.Y=619 he flips)
And is there any way to use the 1920x1080 resolution in Background node?

Code: Select all
{
   Tools = ordered() {
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 235.986, 26.7575 } },
      },
      Background = Background {
         NameSet = true,
         Inputs = {
            EffectMask = Input {
               SourceOp = "Pol",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 59, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1920, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 0.298039215686275, },
            TopLeftBlue = Input { Value = 0.498039215686275, },
            BottomLeftRed = Input { Value = 1, },
            Start = Input {
               Value = { 0.55, 0.569 },
               Expression = "Point(Pol.Point1.X, Pol.Point1.Y)",
            },
            End = Input {
               Value = { 0.271, 0.569 },
               Expression = "Point(Pol.Point2.X, Pol.Point2.Y)",
            },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 1, 0.913, 0, 1 },
                     [1] = { 0.882, 0, 1, 1 }
                  }
               },
            },
            GradientInterpolationMethod = Input { Value = FuID { "LAB" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 115.992, 26.7575 } },
      },
      Background2 = Background {
         NameSet = true,
         Inputs = {
            GlobalOut = Input { Value = 59, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.835, },
            TopLeftGreen = Input { Value = 0.819, },
            TopLeftBlue = Input { Value = 0.866, },
         },
         ViewInfo = OperatorInfo { Pos = { 235.986, 71.6065 } },
      },
      Pol = PolylineMask {
         DrawMode = "ClickAppend",
         DrawMode2 = "InsertAndModify",
         CtrlWZoom = false,
         NameSet = true,
         Inputs = {
            ShowViewControls = Input { Value = 0, },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.007, },
            CapStyle = Input { Value = 0, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, X = 0.05, Y = 0.119, RX = 0, RY = -0.0166666666666667, PublishID = "Point0" },
                     { Linear = true, X = 0.05, Y = 0.069, LX = 0, LY = 0.0166666666666667, RX = -0.093, RY = 0, PublishID = "Point1" },
                     { Linear = true, X = -0.229, Y = 0.069, LX = 0.093, LY = 0, RX = 0, RY = 0.0166666666666667, PublishID = "Point2" },
                     { Linear = true, X = -0.229, Y = 0.119, LX = 0, LY = -0.0166666666666667, PublishID = "Point3" }
                  }
               },
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
            Point3 = Input { Value = { 0.271, 0.619 }, },
            Point2 = Input {
               Value = { 0.271, 0.569 },
               Expression = "Point(\nPoint3.X -abs(cos(atan((Point3.X-Point0.X)/((Point3.Y-Point0.Y))))*0.05),\nPoint3.Y + (sin(atan((Point3.X-Point0.X)/((Point3.Y-Point0.Y))))*0.05))",
            },
            Point1 = Input {
               Value = { 0.55, 0.569 },
               Expression = "Point(\nPoint0.X - abs(cos(atan((Point3.X-Point0.X)/(Point3.Y-Point0.Y)))*0.05), \nPoint0.Y + (sin(atan((Point3.X-Point0.X)/(Point3.Y-Point0.Y)))*0.05))",
            },
            Point0 = Input { Value = { 0.55, 0.619 }, },
         },
         ViewInfo = OperatorInfo { Pos = { 5.99235, 26.7575 } },
         Colors = { TileColor = { R = 0, G = 0.596078431372549, B = 0.6 }, },
         UserControls = ordered() { Point3 = { INP_DefaultX = 0.45, INPID_PreviewControl = "PointControl", INP_DefaultY = 0.9, LINKID_DataType = "Point", ICS_ControlPage = "Controls", INPID_InputControl = "OffsetControl", LINKS_Name = "Point 3", }, Point2 = { INP_DefaultX = 0.5, INPID_PreviewControl = "PointControl", INP_DefaultY = 0.9, LINKID_DataType = "Point", ICS_ControlPage = "Controls", INPID_InputControl = "OffsetControl", LINKS_Name = "Point 2", }, Point1 = { INP_DefaultX = 0.5, INPID_PreviewControl = "PointControl", INP_DefaultY = 0.1, LINKID_DataType = "Point", ICS_ControlPage = "Controls", INPID_InputControl = "OffsetControl", LINKS_Name = "Point 1", }, Point0 = { INP_DefaultX = 0.45, INPID_PreviewControl = "PointControl", INP_DefaultY = 0.1, LINKID_DataType = "Point", ICS_ControlPage = "Controls", INPID_InputControl = "OffsetControl", LINKS_Name = "Point 0", } }
      }
   }
}
i7-9700k 4.3GHz, 32GB RAM, SSD 1TB M.2, SSD 512GB M.2, GTX 1650(4GB).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 2181
  • Joined: Wed Aug 22, 2012 7:48 am

Re: How to save the angle

PostTue Dec 06, 2022 8:19 pm

For the flip, you can use a conditional expression to test your Y values and adjust the maths accordingly.
For a non-square background, you'll need to adjust for the aspect ratio disparity in your expression.
Offline

Rezzimx

  • Posts: 598
  • Joined: Sun Jul 21, 2019 3:53 am
  • Real Name: Tymur Suleimanov

Re: How to save the angle

PostTue Dec 06, 2022 8:26 pm

Andy Mees wrote:For the flip, you can use a conditional expression to test your Y values and adjust the maths accordingly.
For a non-square background, you'll need to adjust for the aspect ratio disparity in your expression.

Got it, thank you very much!
A conditional expression is (if else)?
i7-9700k 4.3GHz, 32GB RAM, SSD 1TB M.2, SSD 512GB M.2, GTX 1650(4GB).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 2181
  • Joined: Wed Aug 22, 2012 7:48 am

Re: How to save the angle

PostTue Dec 06, 2022 8:43 pm

Yep.... you can use the syntax:
iif(condition, expression if true, expression if false)

For example:
iif(Point2.Y>=Point1.Y, Point(
Point2.X - abs(cos(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05),
Point2.Y + (sin(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05))
, Point(
Point2.X + abs(cos(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05),
Point2.Y - (sin(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05))
)
Offline

Rezzimx

  • Posts: 598
  • Joined: Sun Jul 21, 2019 3:53 am
  • Real Name: Tymur Suleimanov

Re: How to save the angle

PostTue Dec 06, 2022 9:16 pm

Andy Mees wrote:Yep.... you can use the syntax:
iif(condition, expression if true, expression if false)

For example:
iif(Point2.Y>=Point1.Y, Point(
Point2.X - abs(cos(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05),
Point2.Y + (sin(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05))
, Point(
Point2.X + abs(cos(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05),
Point2.Y - (sin(atan((Point2.X-Point1.X)/((Point2.Y-Point1.Y))))*0.05))
)

Wow :o thank you very much!
i7-9700k 4.3GHz, 32GB RAM, SSD 1TB M.2, SSD 512GB M.2, GTX 1650(4GB).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).

Return to DaVinci Resolve

Who is online

Users browsing this forum: BetaWar, Bing [Bot], Kyle R Lancaster, nnjrewzas112, panos_mts, WestCoastDP, wexdan and 92 guests