How to save the angle

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

Rezzimx

  • Posts: 683
  • 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), G24F 2 (1920x1080, 23.8", 165 Hz).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 3255
  • 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: 683
  • 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), G24F 2 (1920x1080, 23.8", 165 Hz).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 3255
  • 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: 683
  • 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), G24F 2 (1920x1080, 23.8", 165 Hz).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 3255
  • 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: 683
  • 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), G24F 2 (1920x1080, 23.8", 165 Hz).
Windows 10 x64 Pro (Last Update), NVIDIA Driver Studio (Last Update), DaVinci Resolve FREE (Last Update).
Offline

Andy Mees

  • Posts: 3255
  • 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: 683
  • 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), G24F 2 (1920x1080, 23.8", 165 Hz).
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: Dermot Shane, general0ne, ghost355, Google [Bot], panos_mts and 178 guests