How can I create a mathematically correct arc/circular segment?












2












$begingroup$


Given 3 vertices, or a chord and height, how can I create a mathematically correct arc/circular segment with an even distribution of vertices while controlling for the number of vertices.



diagram of an arc



I frequently need to model arcs in Blender from real-world measurements. Typically I know the cord and height of the arc, giving me 3 points on the full circle.



To create a mathematically correct arc, controlling for the number of vertices, my workflow is as follows:




  1. Plug the coordinates of the three vertices into a digital graphics calculator.

  2. Retrieve the location of the centre of the full circle, and the angle between the vertices at either end of the cord.

  3. Place the cursor at the centre of the full circle in Blender by editing the 3D cursor coordinates.

  4. Select one vertex on the chord and use the spin tool, manually entering in the angle retrieved from the graphics calculator and the number of desired vertices.


While this produces an accurate result it is a rather tedious process. How can I achieve this same result using a faster workflow?










share|improve this question









$endgroup$

















    2












    $begingroup$


    Given 3 vertices, or a chord and height, how can I create a mathematically correct arc/circular segment with an even distribution of vertices while controlling for the number of vertices.



    diagram of an arc



    I frequently need to model arcs in Blender from real-world measurements. Typically I know the cord and height of the arc, giving me 3 points on the full circle.



    To create a mathematically correct arc, controlling for the number of vertices, my workflow is as follows:




    1. Plug the coordinates of the three vertices into a digital graphics calculator.

    2. Retrieve the location of the centre of the full circle, and the angle between the vertices at either end of the cord.

    3. Place the cursor at the centre of the full circle in Blender by editing the 3D cursor coordinates.

    4. Select one vertex on the chord and use the spin tool, manually entering in the angle retrieved from the graphics calculator and the number of desired vertices.


    While this produces an accurate result it is a rather tedious process. How can I achieve this same result using a faster workflow?










    share|improve this question









    $endgroup$















      2












      2








      2





      $begingroup$


      Given 3 vertices, or a chord and height, how can I create a mathematically correct arc/circular segment with an even distribution of vertices while controlling for the number of vertices.



      diagram of an arc



      I frequently need to model arcs in Blender from real-world measurements. Typically I know the cord and height of the arc, giving me 3 points on the full circle.



      To create a mathematically correct arc, controlling for the number of vertices, my workflow is as follows:




      1. Plug the coordinates of the three vertices into a digital graphics calculator.

      2. Retrieve the location of the centre of the full circle, and the angle between the vertices at either end of the cord.

      3. Place the cursor at the centre of the full circle in Blender by editing the 3D cursor coordinates.

      4. Select one vertex on the chord and use the spin tool, manually entering in the angle retrieved from the graphics calculator and the number of desired vertices.


      While this produces an accurate result it is a rather tedious process. How can I achieve this same result using a faster workflow?










      share|improve this question









      $endgroup$




      Given 3 vertices, or a chord and height, how can I create a mathematically correct arc/circular segment with an even distribution of vertices while controlling for the number of vertices.



      diagram of an arc



      I frequently need to model arcs in Blender from real-world measurements. Typically I know the cord and height of the arc, giving me 3 points on the full circle.



      To create a mathematically correct arc, controlling for the number of vertices, my workflow is as follows:




      1. Plug the coordinates of the three vertices into a digital graphics calculator.

      2. Retrieve the location of the centre of the full circle, and the angle between the vertices at either end of the cord.

      3. Place the cursor at the centre of the full circle in Blender by editing the 3D cursor coordinates.

      4. Select one vertex on the chord and use the spin tool, manually entering in the angle retrieved from the graphics calculator and the number of desired vertices.


      While this produces an accurate result it is a rather tedious process. How can I achieve this same result using a faster workflow?







      modeling scripting add-on geometry






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 9 at 11:48









      BlenderBroBlenderBro

      634418




      634418






















          2 Answers
          2






          active

          oldest

          votes


















          2












          $begingroup$

          Add Primitive Arc Operator



          enter image description here



          The theory is well covered here Calculate the radius of a circle given the chord length and height of a segment



          The text editor > Templates > Python > Operator Add Mesh template modified to add an arc.



          Input the arc length, arc height and number of segments and it creates an arc.



          Notes. Haven't dealt with the restriction that arc height can only ever by at most half chord length for a semi circle.



          import bpy
          import bmesh
          from mathutils import Matrix
          from math import asin

          from bpy.props import (
          IntProperty,
          BoolProperty,
          BoolVectorProperty,
          FloatProperty,
          FloatVectorProperty,
          )


          class AddArc(bpy.types.Operator):
          """Add a simple arc mesh"""
          bl_idname = "mesh.primitive_arc_add"
          bl_label = "Add Arc"
          bl_options = {'REGISTER', 'UNDO'}

          length: FloatProperty(
          name="length",
          description="Chord Length",
          min=0.01, max=100.0,
          default=2.0,
          )
          height: FloatProperty(
          name="Height",
          description="Arc Height",
          min=0.01, max=100.0,
          default=1.0,
          )
          segments: IntProperty(
          name="Arc Segments",
          description="Number of Segments",
          min=1,
          default=8,
          )
          layers: BoolVectorProperty(
          name="Layers",
          description="Object Layers",
          size=20,
          options={'HIDDEN', 'SKIP_SAVE'},
          )

          # generic transform props
          view_align: BoolProperty(
          name="Align to View",
          default=False,
          )
          location: FloatVectorProperty(
          name="Location",
          subtype='TRANSLATION',
          )
          rotation: FloatVectorProperty(
          name="Rotation",
          subtype='EULER',
          )

          def execute(self, context):
          h = self.height
          a = self.length / 2
          r = (a * a + h * h) / (2 * h)
          if abs(a / r) > 1:
          # math domain error on arcsin
          return {'CANCELLED'}
          angle = 2 * asin(a / r)

          mesh = bpy.data.meshes.new("Arc")

          bm = bmesh.new()
          v = bm.verts.new((0, r, 0))
          bmesh.ops.rotate(bm,
          verts=[v],
          matrix=Matrix.Rotation(angle/2, 3, 'Z')
          )
          bmesh.ops.spin(bm,
          geom=[v],
          axis=(0, 0, 1),
          steps=self.segments,
          angle=-angle,
          )

          for v in bm.verts:
          v.co.y -= r - h
          v.select = True
          bm.to_mesh(mesh)
          mesh.update()

          # add the mesh as an object into the scene with this utility module
          from bpy_extras import object_utils
          object_utils.object_data_add(context, mesh, operator=self)

          return {'FINISHED'}


          def menu_func(self, context):
          self.layout.operator(AddArc.bl_idname, icon='MESH_CUBE')


          def register():
          bpy.utils.register_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


          def unregister():
          bpy.utils.unregister_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


          if __name__ == "__main__":
          register()

          # test call
          bpy.ops.mesh.primitive_arc_add()





          share|improve this answer











          $endgroup$













          • $begingroup$
            Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
            $endgroup$
            – BlenderBro
            Mar 9 at 22:09



















          0












          $begingroup$


          1. Insert a plane with the edge length matching your chord's length;

          2. Remove the plane's two opposite vertices to have a segment;

          3. Subdivide the segment the odd number of times;

          4. Use proportional editing with the circular fall-off, the middle vertex selected, and move everything along Z axis to the desired height.


          You may also join the opposite ends of your arc creating an edge if needed.






          share|improve this answer









          $endgroup$









          • 2




            $begingroup$
            For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
            $endgroup$
            – BlenderBro
            Mar 9 at 12:41










          • $begingroup$
            With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
            $endgroup$
            – Lukasz-40sth
            Mar 9 at 13:18











          Your Answer





          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("mathjaxEditing", function () {
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          });
          });
          }, "mathjax-editing");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "502"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f133870%2fhow-can-i-create-a-mathematically-correct-arc-circular-segment%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2












          $begingroup$

          Add Primitive Arc Operator



          enter image description here



          The theory is well covered here Calculate the radius of a circle given the chord length and height of a segment



          The text editor > Templates > Python > Operator Add Mesh template modified to add an arc.



          Input the arc length, arc height and number of segments and it creates an arc.



          Notes. Haven't dealt with the restriction that arc height can only ever by at most half chord length for a semi circle.



          import bpy
          import bmesh
          from mathutils import Matrix
          from math import asin

          from bpy.props import (
          IntProperty,
          BoolProperty,
          BoolVectorProperty,
          FloatProperty,
          FloatVectorProperty,
          )


          class AddArc(bpy.types.Operator):
          """Add a simple arc mesh"""
          bl_idname = "mesh.primitive_arc_add"
          bl_label = "Add Arc"
          bl_options = {'REGISTER', 'UNDO'}

          length: FloatProperty(
          name="length",
          description="Chord Length",
          min=0.01, max=100.0,
          default=2.0,
          )
          height: FloatProperty(
          name="Height",
          description="Arc Height",
          min=0.01, max=100.0,
          default=1.0,
          )
          segments: IntProperty(
          name="Arc Segments",
          description="Number of Segments",
          min=1,
          default=8,
          )
          layers: BoolVectorProperty(
          name="Layers",
          description="Object Layers",
          size=20,
          options={'HIDDEN', 'SKIP_SAVE'},
          )

          # generic transform props
          view_align: BoolProperty(
          name="Align to View",
          default=False,
          )
          location: FloatVectorProperty(
          name="Location",
          subtype='TRANSLATION',
          )
          rotation: FloatVectorProperty(
          name="Rotation",
          subtype='EULER',
          )

          def execute(self, context):
          h = self.height
          a = self.length / 2
          r = (a * a + h * h) / (2 * h)
          if abs(a / r) > 1:
          # math domain error on arcsin
          return {'CANCELLED'}
          angle = 2 * asin(a / r)

          mesh = bpy.data.meshes.new("Arc")

          bm = bmesh.new()
          v = bm.verts.new((0, r, 0))
          bmesh.ops.rotate(bm,
          verts=[v],
          matrix=Matrix.Rotation(angle/2, 3, 'Z')
          )
          bmesh.ops.spin(bm,
          geom=[v],
          axis=(0, 0, 1),
          steps=self.segments,
          angle=-angle,
          )

          for v in bm.verts:
          v.co.y -= r - h
          v.select = True
          bm.to_mesh(mesh)
          mesh.update()

          # add the mesh as an object into the scene with this utility module
          from bpy_extras import object_utils
          object_utils.object_data_add(context, mesh, operator=self)

          return {'FINISHED'}


          def menu_func(self, context):
          self.layout.operator(AddArc.bl_idname, icon='MESH_CUBE')


          def register():
          bpy.utils.register_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


          def unregister():
          bpy.utils.unregister_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


          if __name__ == "__main__":
          register()

          # test call
          bpy.ops.mesh.primitive_arc_add()





          share|improve this answer











          $endgroup$













          • $begingroup$
            Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
            $endgroup$
            – BlenderBro
            Mar 9 at 22:09
















          2












          $begingroup$

          Add Primitive Arc Operator



          enter image description here



          The theory is well covered here Calculate the radius of a circle given the chord length and height of a segment



          The text editor > Templates > Python > Operator Add Mesh template modified to add an arc.



          Input the arc length, arc height and number of segments and it creates an arc.



          Notes. Haven't dealt with the restriction that arc height can only ever by at most half chord length for a semi circle.



          import bpy
          import bmesh
          from mathutils import Matrix
          from math import asin

          from bpy.props import (
          IntProperty,
          BoolProperty,
          BoolVectorProperty,
          FloatProperty,
          FloatVectorProperty,
          )


          class AddArc(bpy.types.Operator):
          """Add a simple arc mesh"""
          bl_idname = "mesh.primitive_arc_add"
          bl_label = "Add Arc"
          bl_options = {'REGISTER', 'UNDO'}

          length: FloatProperty(
          name="length",
          description="Chord Length",
          min=0.01, max=100.0,
          default=2.0,
          )
          height: FloatProperty(
          name="Height",
          description="Arc Height",
          min=0.01, max=100.0,
          default=1.0,
          )
          segments: IntProperty(
          name="Arc Segments",
          description="Number of Segments",
          min=1,
          default=8,
          )
          layers: BoolVectorProperty(
          name="Layers",
          description="Object Layers",
          size=20,
          options={'HIDDEN', 'SKIP_SAVE'},
          )

          # generic transform props
          view_align: BoolProperty(
          name="Align to View",
          default=False,
          )
          location: FloatVectorProperty(
          name="Location",
          subtype='TRANSLATION',
          )
          rotation: FloatVectorProperty(
          name="Rotation",
          subtype='EULER',
          )

          def execute(self, context):
          h = self.height
          a = self.length / 2
          r = (a * a + h * h) / (2 * h)
          if abs(a / r) > 1:
          # math domain error on arcsin
          return {'CANCELLED'}
          angle = 2 * asin(a / r)

          mesh = bpy.data.meshes.new("Arc")

          bm = bmesh.new()
          v = bm.verts.new((0, r, 0))
          bmesh.ops.rotate(bm,
          verts=[v],
          matrix=Matrix.Rotation(angle/2, 3, 'Z')
          )
          bmesh.ops.spin(bm,
          geom=[v],
          axis=(0, 0, 1),
          steps=self.segments,
          angle=-angle,
          )

          for v in bm.verts:
          v.co.y -= r - h
          v.select = True
          bm.to_mesh(mesh)
          mesh.update()

          # add the mesh as an object into the scene with this utility module
          from bpy_extras import object_utils
          object_utils.object_data_add(context, mesh, operator=self)

          return {'FINISHED'}


          def menu_func(self, context):
          self.layout.operator(AddArc.bl_idname, icon='MESH_CUBE')


          def register():
          bpy.utils.register_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


          def unregister():
          bpy.utils.unregister_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


          if __name__ == "__main__":
          register()

          # test call
          bpy.ops.mesh.primitive_arc_add()





          share|improve this answer











          $endgroup$













          • $begingroup$
            Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
            $endgroup$
            – BlenderBro
            Mar 9 at 22:09














          2












          2








          2





          $begingroup$

          Add Primitive Arc Operator



          enter image description here



          The theory is well covered here Calculate the radius of a circle given the chord length and height of a segment



          The text editor > Templates > Python > Operator Add Mesh template modified to add an arc.



          Input the arc length, arc height and number of segments and it creates an arc.



          Notes. Haven't dealt with the restriction that arc height can only ever by at most half chord length for a semi circle.



          import bpy
          import bmesh
          from mathutils import Matrix
          from math import asin

          from bpy.props import (
          IntProperty,
          BoolProperty,
          BoolVectorProperty,
          FloatProperty,
          FloatVectorProperty,
          )


          class AddArc(bpy.types.Operator):
          """Add a simple arc mesh"""
          bl_idname = "mesh.primitive_arc_add"
          bl_label = "Add Arc"
          bl_options = {'REGISTER', 'UNDO'}

          length: FloatProperty(
          name="length",
          description="Chord Length",
          min=0.01, max=100.0,
          default=2.0,
          )
          height: FloatProperty(
          name="Height",
          description="Arc Height",
          min=0.01, max=100.0,
          default=1.0,
          )
          segments: IntProperty(
          name="Arc Segments",
          description="Number of Segments",
          min=1,
          default=8,
          )
          layers: BoolVectorProperty(
          name="Layers",
          description="Object Layers",
          size=20,
          options={'HIDDEN', 'SKIP_SAVE'},
          )

          # generic transform props
          view_align: BoolProperty(
          name="Align to View",
          default=False,
          )
          location: FloatVectorProperty(
          name="Location",
          subtype='TRANSLATION',
          )
          rotation: FloatVectorProperty(
          name="Rotation",
          subtype='EULER',
          )

          def execute(self, context):
          h = self.height
          a = self.length / 2
          r = (a * a + h * h) / (2 * h)
          if abs(a / r) > 1:
          # math domain error on arcsin
          return {'CANCELLED'}
          angle = 2 * asin(a / r)

          mesh = bpy.data.meshes.new("Arc")

          bm = bmesh.new()
          v = bm.verts.new((0, r, 0))
          bmesh.ops.rotate(bm,
          verts=[v],
          matrix=Matrix.Rotation(angle/2, 3, 'Z')
          )
          bmesh.ops.spin(bm,
          geom=[v],
          axis=(0, 0, 1),
          steps=self.segments,
          angle=-angle,
          )

          for v in bm.verts:
          v.co.y -= r - h
          v.select = True
          bm.to_mesh(mesh)
          mesh.update()

          # add the mesh as an object into the scene with this utility module
          from bpy_extras import object_utils
          object_utils.object_data_add(context, mesh, operator=self)

          return {'FINISHED'}


          def menu_func(self, context):
          self.layout.operator(AddArc.bl_idname, icon='MESH_CUBE')


          def register():
          bpy.utils.register_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


          def unregister():
          bpy.utils.unregister_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


          if __name__ == "__main__":
          register()

          # test call
          bpy.ops.mesh.primitive_arc_add()





          share|improve this answer











          $endgroup$



          Add Primitive Arc Operator



          enter image description here



          The theory is well covered here Calculate the radius of a circle given the chord length and height of a segment



          The text editor > Templates > Python > Operator Add Mesh template modified to add an arc.



          Input the arc length, arc height and number of segments and it creates an arc.



          Notes. Haven't dealt with the restriction that arc height can only ever by at most half chord length for a semi circle.



          import bpy
          import bmesh
          from mathutils import Matrix
          from math import asin

          from bpy.props import (
          IntProperty,
          BoolProperty,
          BoolVectorProperty,
          FloatProperty,
          FloatVectorProperty,
          )


          class AddArc(bpy.types.Operator):
          """Add a simple arc mesh"""
          bl_idname = "mesh.primitive_arc_add"
          bl_label = "Add Arc"
          bl_options = {'REGISTER', 'UNDO'}

          length: FloatProperty(
          name="length",
          description="Chord Length",
          min=0.01, max=100.0,
          default=2.0,
          )
          height: FloatProperty(
          name="Height",
          description="Arc Height",
          min=0.01, max=100.0,
          default=1.0,
          )
          segments: IntProperty(
          name="Arc Segments",
          description="Number of Segments",
          min=1,
          default=8,
          )
          layers: BoolVectorProperty(
          name="Layers",
          description="Object Layers",
          size=20,
          options={'HIDDEN', 'SKIP_SAVE'},
          )

          # generic transform props
          view_align: BoolProperty(
          name="Align to View",
          default=False,
          )
          location: FloatVectorProperty(
          name="Location",
          subtype='TRANSLATION',
          )
          rotation: FloatVectorProperty(
          name="Rotation",
          subtype='EULER',
          )

          def execute(self, context):
          h = self.height
          a = self.length / 2
          r = (a * a + h * h) / (2 * h)
          if abs(a / r) > 1:
          # math domain error on arcsin
          return {'CANCELLED'}
          angle = 2 * asin(a / r)

          mesh = bpy.data.meshes.new("Arc")

          bm = bmesh.new()
          v = bm.verts.new((0, r, 0))
          bmesh.ops.rotate(bm,
          verts=[v],
          matrix=Matrix.Rotation(angle/2, 3, 'Z')
          )
          bmesh.ops.spin(bm,
          geom=[v],
          axis=(0, 0, 1),
          steps=self.segments,
          angle=-angle,
          )

          for v in bm.verts:
          v.co.y -= r - h
          v.select = True
          bm.to_mesh(mesh)
          mesh.update()

          # add the mesh as an object into the scene with this utility module
          from bpy_extras import object_utils
          object_utils.object_data_add(context, mesh, operator=self)

          return {'FINISHED'}


          def menu_func(self, context):
          self.layout.operator(AddArc.bl_idname, icon='MESH_CUBE')


          def register():
          bpy.utils.register_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.append(menu_func)


          def unregister():
          bpy.utils.unregister_class(AddArc)
          bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)


          if __name__ == "__main__":
          register()

          # test call
          bpy.ops.mesh.primitive_arc_add()






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 9 at 14:25

























          answered Mar 9 at 13:48









          batFINGERbatFINGER

          25.5k52876




          25.5k52876












          • $begingroup$
            Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
            $endgroup$
            – BlenderBro
            Mar 9 at 22:09


















          • $begingroup$
            Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
            $endgroup$
            – BlenderBro
            Mar 9 at 22:09
















          $begingroup$
          Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
          $endgroup$
          – BlenderBro
          Mar 9 at 22:09




          $begingroup$
          Works amazingly. Thanks! Should definitely be added to the bundled "Extra Objects" add-on.
          $endgroup$
          – BlenderBro
          Mar 9 at 22:09













          0












          $begingroup$


          1. Insert a plane with the edge length matching your chord's length;

          2. Remove the plane's two opposite vertices to have a segment;

          3. Subdivide the segment the odd number of times;

          4. Use proportional editing with the circular fall-off, the middle vertex selected, and move everything along Z axis to the desired height.


          You may also join the opposite ends of your arc creating an edge if needed.






          share|improve this answer









          $endgroup$









          • 2




            $begingroup$
            For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
            $endgroup$
            – BlenderBro
            Mar 9 at 12:41










          • $begingroup$
            With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
            $endgroup$
            – Lukasz-40sth
            Mar 9 at 13:18
















          0












          $begingroup$


          1. Insert a plane with the edge length matching your chord's length;

          2. Remove the plane's two opposite vertices to have a segment;

          3. Subdivide the segment the odd number of times;

          4. Use proportional editing with the circular fall-off, the middle vertex selected, and move everything along Z axis to the desired height.


          You may also join the opposite ends of your arc creating an edge if needed.






          share|improve this answer









          $endgroup$









          • 2




            $begingroup$
            For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
            $endgroup$
            – BlenderBro
            Mar 9 at 12:41










          • $begingroup$
            With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
            $endgroup$
            – Lukasz-40sth
            Mar 9 at 13:18














          0












          0








          0





          $begingroup$


          1. Insert a plane with the edge length matching your chord's length;

          2. Remove the plane's two opposite vertices to have a segment;

          3. Subdivide the segment the odd number of times;

          4. Use proportional editing with the circular fall-off, the middle vertex selected, and move everything along Z axis to the desired height.


          You may also join the opposite ends of your arc creating an edge if needed.






          share|improve this answer









          $endgroup$




          1. Insert a plane with the edge length matching your chord's length;

          2. Remove the plane's two opposite vertices to have a segment;

          3. Subdivide the segment the odd number of times;

          4. Use proportional editing with the circular fall-off, the middle vertex selected, and move everything along Z axis to the desired height.


          You may also join the opposite ends of your arc creating an edge if needed.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 9 at 12:29









          Lukasz-40sthLukasz-40sth

          929414




          929414








          • 2




            $begingroup$
            For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
            $endgroup$
            – BlenderBro
            Mar 9 at 12:41










          • $begingroup$
            With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
            $endgroup$
            – Lukasz-40sth
            Mar 9 at 13:18














          • 2




            $begingroup$
            For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
            $endgroup$
            – BlenderBro
            Mar 9 at 12:41










          • $begingroup$
            With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
            $endgroup$
            – Lukasz-40sth
            Mar 9 at 13:18








          2




          2




          $begingroup$
          For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
          $endgroup$
          – BlenderBro
          Mar 9 at 12:41




          $begingroup$
          For the purposes of this question I'm interested in creating mathematically accurate arcs as opposed to eyeballing approximations.
          $endgroup$
          – BlenderBro
          Mar 9 at 12:41












          $begingroup$
          With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
          $endgroup$
          – Lukasz-40sth
          Mar 9 at 13:18




          $begingroup$
          With arcs and circles it's always an approximation as there's this pi number. And if you input given values, approximated as well, exactly you get the result.
          $endgroup$
          – Lukasz-40sth
          Mar 9 at 13:18


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Blender Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fblender.stackexchange.com%2fquestions%2f133870%2fhow-can-i-create-a-mathematically-correct-arc-circular-segment%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          How to label and detect the document text images

          Vallis Paradisi

          Tabula Rosettana