16 Replies Latest reply on Nov 22, 2013 7:51 AM by CarlosCanto

    Custom Angled Triangles Question

    arteangelus Level 1

      I'm quite suprised that powerful Illustrator does not have any easy solution for creating custom angled triangles. Is there anybody help me to create a custom angle triangle script ?

      Thank you,

      Best Regards.

        • 1. Re: Custom Angled Triangles Question
          CarlosCanto Adobe Community Professional & MVP

          please elaborate, do you want to provide let's say 2 angles and build a triangle?

          • 2. Re: Custom Angled Triangles Question
            arteangelus Level 1

            Yes exactly, I have noticed that there is no such script around the net. I don't have any Illustrator Scripting experience, I can only modify script with the help of scripting dictionaries:)

            I have found an example in Adobe Illustrator Scripting Guide;

             

            Basically I want two input box for degree and script should automatically creates a triangle. ( In fact it would be great if we would enter the values of edges (a,b) )

             

            // Create 45 Degree Triangle

            var doc = app.activeDocument;

            var sel = doc.selection;

            dw  = doc.width;

            dh = doc.height;

            wc= dw /2;

            hc = dh *-0.5;

            if ( app.documents.length > 0 ) {

            var triangleGroup = app.activeDocument.groupItems.add();

            // Create a triangle and add text, the new art is created inside the group

            var trianglePath = triangleGroup.pathItems.add();

            trianglePath.setEntirePath( Array( Array(0, 100), Array(100, 0),

            Array(0,0) ) );

            trianglePath.closed = true;

            trianglePath.stroked = true;

            trianglePath.filled =true;

            trianglePath.strokeWidth = 3;

            trianglePath.position = Array(wc,hc);

            }

             

            Would you please help me, I would be really grateful:)))

            • 3. Re: Custom Angled Triangles Question
              CarlosCanto Adobe Community Professional & MVP

              ( In fact it would be great if we would enter the values of edges (a,b) )

              by "edges", do you mean "sides"?, if so we need a third variable for angle, (a,b,c) (side, side, angle)

              • 4. Re: Custom Angled Triangles Question
                arteangelus Level 1

                Yes, sides. Since the sum of internal angles of a triangle is 180 degree, I guess we do not need. Or am I missing out something? (Sorry I did not have any math class:) )

                I think we need something like Scalene Triangle. But for the side length do we need to know their values? Or the math itself automatically gives the rest.

                • 5. Re: Custom Angled Triangles Question
                  CarlosCanto Adobe Community Professional & MVP

                  look here, we need at leat 3 values of any kind, mix and match sides and/or angles

                  http://ostermiller.org/calc/triangle.html

                  1 person found this helpful
                  • 6. Re: Custom Angled Triangles Question
                    arteangelus Level 1

                    Hımm, ok you right, It's ok then but how:))) All I want is to create a triangle which I can enter custom values, I guess It would be very useful for lots of people. Is it possible to continue and modify with the script below?

                     

                    // Create 45 Degree Triangle

                    var doc = app.activeDocument;

                    var sel = doc.selection;

                    dw  = doc.width;

                    dh = doc.height;

                    wc= dw /2;

                    hc = dh *-0.5;

                    if ( app.documents.length > 0 ) {

                    var triangleGroup = app.activeDocument.groupItems.add();

                    // Create a triangle and add text, the new art is created inside the group

                    var trianglePath = triangleGroup.pathItems.add();

                    trianglePath.setEntirePath( Array( Array(0, 100), Array(100, 0),

                    Array(0,0) ) );

                    trianglePath.closed = true;

                    trianglePath.stroked = true;

                    trianglePath.filled =true;

                    trianglePath.strokeWidth = 3;

                    trianglePath.position = Array(wc,hc);

                    }

                    • 7. Re: Custom Angled Triangles Question
                      arteangelus Level 1

                      And also as you have written (a,b,c) (side, side, angle) we can do vice versa like angle,angle,side. I tried it on calculator you have sent me.

                      • 8. Re: Custom Angled Triangles Question
                        CarlosCanto Adobe Community Professional & MVP

                        Triangle Maker (Side, Side, Angle)

                         

                        // Triangle Maker (Side, Side, Angle)
                        // Carlos Canto - 11/21/13;
                        // http://forums.adobe.com/thread/1339420?tstart=0
                        
                        
                        var idoc = app.activeDocument;
                        
                        
                        var s_ssa = Window.prompt ('Enter 2 Sides in points, Angle in degrees, (Side, Side, Angle)', '100, 120, 30', 'Triangle Maker');
                        var a_ssa = s_ssa.split(','); // turn into an array
                        
                        
                        var side1 = parseFloat (a_ssa[0]);
                        var side2 = parseFloat (a_ssa[1]);
                        var angle = parseFloat (a_ssa[2]);
                        
                        
                        var path1 = idoc.pathItems.add();
                        var p0 = [0,0];
                        var p1 = [side1,0];
                        var p2 = getSideAngePoint (side2, angle);
                        
                        
                        path1.setEntirePath ([p0, p1, p2]);
                        path1.closed = true;
                        
                        
                        // returns point 2 given a segment length and its angle, point 1 is [0,0]
                        function getSideAngePoint(side, angle) {
                            var rads = angle*Math.PI/180;
                            var px = Math.cos(rads)*side;
                            var py = Math.sin(rads)*side;
                        
                        
                          return [px, py];
                        }
                        
                        • 9. Re: Custom Angled Triangles Question
                          CarlosCanto Adobe Community Professional & MVP

                          Triangle Maker (Side, Angle, Angle)

                           

                          // Triangle Maker (Side, Angle, Angle)
                          // Carlos Canto - 11/21/13;
                          // http://forums.adobe.com/thread/1339420?tstart=0
                          
                          
                          var idoc = app.activeDocument;
                          
                          
                          var s_ssa = Window.prompt ('Enter 1 Side in points, 2 Angles in degrees, (Side, Angle1, Angle2)', '120, 30, 57', 'Triangle Maker');
                          var a_ssa = s_ssa.split(','); // turn into an array
                          
                          
                          var side = parseFloat (a_ssa[0]);
                          var angle1 = parseFloat (a_ssa[1]);
                          var angle2 = parseFloat (a_ssa[2]);
                          
                          
                          if (angle1+angle2<180) {
                              var path1 = idoc.pathItems.add();
                              var p0 = [0,0];
                              var p1 = getSideAngePoint (side, angle1);
                          
                          
                              var C = get3rdAngle (angle1, angle2);
                              var teta = getTempAngle (C); // the one that forms a Right Angle Triangle, down from Side Point 2 and hipotenuse
                              var adj = p1[1];
                              var opo = oposite (adj, teta);
                          
                          
                              var p2x = p1[0]+opo;
                          
                          
                              var p2 = [p2x,0];
                          
                          
                          
                          
                              path1.setEntirePath ([p0, p1, p2]);
                              path1.closed = true;
                          }
                          else {alert('both angles combined should be less than 180');}
                          
                          
                          // returns point 2 given a segment length and its angle, point 1 is [0,0]
                          function getSideAngePoint(side, angle) {
                              var rads = angle*Math.PI/180;
                              var px = Math.cos(rads)*side;
                              var py = Math.sin(rads)*side;
                          
                          
                            return [px, py];
                          }
                          
                          
                          
                          
                          // given 2 angles, return the 3rd angle
                          function get3rdAngle(angle1, angle2) {
                              return 180-angle1-angle2;
                          }
                          
                          
                          // return "TETA" in a complimentary Right Angle Triangle
                          function getTempAngle(thirdAngle) {
                              return 90-thirdAngle;
                          }
                          
                          
                          // returns the Oposite side in the complimentary Right Angle Triangle
                          function oposite (adj, angle) {
                              //tan teta = oposite/adjacent
                              var rads = angle*Math.PI/180;
                              var op = Math.tan (rads)*adj;
                              return op;
                          }
                          
                          • 10. Re: Custom Angled Triangles Question
                            arteangelus Level 1

                            Thanks a million:) it works like a charm..with your permission I would like to share it through my web site with your name. You're great:)))

                            • 11. Re: Custom Angled Triangles Question
                              CarlosCanto Adobe Community Professional & MVP

                              you're welcome, go ahead and share it

                              • 12. Re: Custom Angled Triangles Question
                                CarlosCanto Adobe Community Professional & MVP

                                by the way, what do you do? what's your need to automate the creation of triangles?

                                • 13. Re: Custom Angled Triangles Question
                                  arteangelus Level 1

                                  http://creativetuts.com/tutorials/illustrator-tutorials/custom-angled-triangle-maker-scrip t-for-ai/

                                   

                                  I was trying to create complex geometrical patterns in Cinema 4D. I have found one example and decided to try it on Illustrator for the base seed. But It was containing a triangle with 30,30,120 degrees. Then I have searched around the net found some tutorials but they were so long and they were not practical at all. I'm sure that this script would help some other people also. Thank you very much again.

                                   

                                  (By the way one of my friend asked if it has an ability to work with polygons. (with custom side count option and entering their angle values. Just saying may be you would create a plugin or a more complex script doing these kind of stuff and sell it. I would gladly buy it...Just an idea...)   

                                  • 14. Re: Custom Angled Triangles Question
                                    CarlosCanto Adobe Community Professional & MVP

                                    cool, I'm always curios about the script usage and the type of art being made with it.

                                     

                                    the two scripts posted above only work with Triangles, polygons need to be treated separately.

                                     

                                     

                                    By the way one of my friend asked if it has an ability to work with polygons. (with custom side count option and entering their angle values. Just saying may be you would create a plugin or a more complex script doing these kind of stuff and sell it. I would gladly buy it...Just an idea...

                                    this one is free of charge, but I gladly take donations (if you wish, paypal me at this account xtaurio at yahoo dot com)

                                     

                                    #target Illustrator
                                    
                                    //  script.name = polygonBySide.jsx;
                                    //  script.description = creates a polygon based on side length;
                                    //  script.requirement = an open document;
                                    //  script.parent = CarlosCanto;  // 11/21/13;
                                    //  script.elegant = false;
                                    
                                    if (app.documents.length>0) polygonBySide ();
                                    else alert ("no document to draw the polygon");
                                    
                                    function polygonBySide() {
                                        var title = "Create Polygon by Side";
                                        var sideLen = Number(prompt ("Enter Side Length in Points", 20, title));
                                        var numberOfSides = Number(prompt ("Enter number of sides", 5, title));
                                    
                                        //var s = 2*r*Math.sin(Math.PI/n); // side length = 2*radius*sin(180 deg/number of sides)
                                        var radius = sideLen/(2*Math.sin(Math.PI/numberOfSides));
                                    
                                        var idoc = app.activeDocument;
                                        var ctr = idoc.activeView.centerPoint;
                                    
                                        var ipoly = idoc.pathItems.polygon (ctr[0], ctr[1], radius, numberOfSides);
                                    }
                                    
                                    • 15. Re: Custom Angled Triangles Question
                                      arteangelus Level 1

                                      Thanks again, http://creativetuts.com/tutorials/illustrator-tutorials/polygon-by-side-ai-script/

                                       

                                      I have also added a donation button linked to your account. Hope it's ok...

                                      (By the way again it would be even better if it would have an Angle option too..But I guess it's very hard, according to side number it should create dialog boxes for to enter each angle and side. And I guess it's impossible to make it closed polygon.)

                                      • 16. Re: Custom Angled Triangles Question
                                        CarlosCanto Adobe Community Professional & MVP

                                        thanks,

                                         

                                        that's correct "regular" polygons have fixed angles, i.e. for rectangles, each angle must be 90 degrees, otherwise it becomes something else...it's possible to script it based on angles but it will only be practical if you want odd shapes.

                                         

                                        thanks again