Corner pointing arrow grid

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
1
down vote

favorite












enter image description here
Hey folks, just whipped this up in Illustrator manually, but looking to do it on a much larger scale. Anyone have an idea as to how to automate this process or have a script that does somethin like it? Thanks!



Also, here's how I did it — is there an easier way in general?
enter image description here










share|improve this question

























    up vote
    1
    down vote

    favorite












    enter image description here
    Hey folks, just whipped this up in Illustrator manually, but looking to do it on a much larger scale. Anyone have an idea as to how to automate this process or have a script that does somethin like it? Thanks!



    Also, here's how I did it — is there an easier way in general?
    enter image description here










    share|improve this question























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      enter image description here
      Hey folks, just whipped this up in Illustrator manually, but looking to do it on a much larger scale. Anyone have an idea as to how to automate this process or have a script that does somethin like it? Thanks!



      Also, here's how I did it — is there an easier way in general?
      enter image description here










      share|improve this question













      enter image description here
      Hey folks, just whipped this up in Illustrator manually, but looking to do it on a much larger scale. Anyone have an idea as to how to automate this process or have a script that does somethin like it? Thanks!



      Also, here's how I did it — is there an easier way in general?
      enter image description here







      adobe-illustrator vector illustrator-scripting






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 1 hour ago









      Josh K-H

      253




      253




















          3 Answers
          3






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          I would use Effect > Distort & Transform > Transform



          Draw a vertical row of arrows. The bottom dot is used as a rotation point.



          enter image description here



          Group all that.



          Choose `Effect > Distort & Transform > Transform**



          Set the Origin point to the Bottom Left:



          enter image description here



          Then add the amount of negative degrees you want in the Angle field and the number of copies you want in the Copies field.



          enter image description here



          Click Okay. Choose Object > Expand Appearance, then `Ungroup* (twice), and delete what you don't want.



          enter image description here






          share|improve this answer



























            up vote
            2
            down vote













            I would use the script Rotate Toward Point by Hiroyuki Sato. The script rotates the objects in the selection toward the center of the foreground object.



            Make sure to place the "selected" object (the one you want rotated towards) on the top.



            Right click → Arrange → Bring to front (Shift+Ctrl+])



            You just select everything and run the script.



                     Before               After



            enter image description hereenter image description here



            (This video also shows the script in action - first he distributes them along the path and then rotates them towards the center person)




            enter image description here




            Code Below



            // rotateTowardPoint.jsx

            // rotates the objects in the selection toward the center of the foreround object.
            // USAGE: select the objects and run this script.

            // test env: Adobe Illustrator CC (Win/Mac)

            // Copyright(c) 2014 Hiroyuki Sato
            // http://shspage.blogspot.jp/
            // This script is distributed under the MIT License.
            // See the LICENSE file for details.

            // Fri, 14 Feb 2014 21:08:40 +0900

            function main()
            // settings:
            // extract_groups: rotates each item in the groups, otherwise rotates each groups (checkbox value)
            // show_dialog: shows a dialog before execution, otherwise shows no dialog
            var conf =
            extract_groups : false,
            show_dialog : true


            if(documents.length < 1) return;

            var sels = activeDocument.selection;
            if( sels.length < 2 ) return;

            if( conf.show_dialog)
            var win = new Window("dialog", "rotateTowardPoint");
            win.alignChildren = "fill";

            win.chk = win.add("checkbox", undefined, "extract groups");

            win.btnGroup = win.add("group", undefined );
            win.btnGroup.alignment = "center";
            win.btnGroup.okBtn = win.btnGroup.add("button", undefined, "OK");
            win.btnGroup.cancelBtn = win.btnGroup.add("button", undefined, "Cancel");

            var getValues = function()
            conf.extract_groups = win.chk.value;


            win.btnGroup.okBtn.onClick = function()
            getValues();
            rotateToPoint( sels, conf );
            win.close();


            win.btnGroup.cancelBtn.onClick = function()
            win.close();

            win.show();
            else
            rotateToPoint( sels, conf );



            function rotateToPoint( sels, conf )
            var target = sels[0];

            if( conf.extract_groups )
            sels = extractGroup( sels.slice(1) );
            else
            sels = sels.slice(1);


            // gets the center of the foreground object.
            // the other objects are rotated toward this point.
            var point = getCenter( target );

            for(var i = 0; i < sels.length; i++)
            var t = getAngle( point, getCenter(sels[i]));
            sels[i].rotate( t - 90, true, true, true, true, Transformation.CENTER );



            function getCenter(p)
            return [p.left + p.width / 2,
            p.top - p.height / 2];


            function getAngle(p1, p2)
            return Math.atan2(p2[1] - p1[1],
            p2[0] - p1[0]) * 180 / Math.PI;


            function extractGroup( s, r )
            if( r == undefined ) r = ;

            for( var i = 0; i < s.length; i++)
            if( s[i].typename == "GroupItem" )
            extractGroup( s[i].pageItems, r );
            else
            r.push( s[i] );



            return r;


            main();





            share|improve this answer





























              up vote
              0
              down vote













              It can be made duplicating arrow blends and replacing spines



              enter image description here



              • Create the spines blending two angles, expand them and ungroup

              spines



              • Create a blend between a horizontal and vertical arrow

              enter image description here



              • Select the arrow blends and one of the angles and replace spine

              spine



              Result



              result






              share|improve this answer






















                Your Answer







                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "174"
                ;
                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',
                convertImagesToLinks: false,
                noModals: false,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                 

                draft saved


                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgraphicdesign.stackexchange.com%2fquestions%2f116215%2fcorner-pointing-arrow-grid%23new-answer', 'question_page');

                );

                Post as a guest






























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes








                up vote
                1
                down vote



                accepted










                I would use Effect > Distort & Transform > Transform



                Draw a vertical row of arrows. The bottom dot is used as a rotation point.



                enter image description here



                Group all that.



                Choose `Effect > Distort & Transform > Transform**



                Set the Origin point to the Bottom Left:



                enter image description here



                Then add the amount of negative degrees you want in the Angle field and the number of copies you want in the Copies field.



                enter image description here



                Click Okay. Choose Object > Expand Appearance, then `Ungroup* (twice), and delete what you don't want.



                enter image description here






                share|improve this answer
























                  up vote
                  1
                  down vote



                  accepted










                  I would use Effect > Distort & Transform > Transform



                  Draw a vertical row of arrows. The bottom dot is used as a rotation point.



                  enter image description here



                  Group all that.



                  Choose `Effect > Distort & Transform > Transform**



                  Set the Origin point to the Bottom Left:



                  enter image description here



                  Then add the amount of negative degrees you want in the Angle field and the number of copies you want in the Copies field.



                  enter image description here



                  Click Okay. Choose Object > Expand Appearance, then `Ungroup* (twice), and delete what you don't want.



                  enter image description here






                  share|improve this answer






















                    up vote
                    1
                    down vote



                    accepted







                    up vote
                    1
                    down vote



                    accepted






                    I would use Effect > Distort & Transform > Transform



                    Draw a vertical row of arrows. The bottom dot is used as a rotation point.



                    enter image description here



                    Group all that.



                    Choose `Effect > Distort & Transform > Transform**



                    Set the Origin point to the Bottom Left:



                    enter image description here



                    Then add the amount of negative degrees you want in the Angle field and the number of copies you want in the Copies field.



                    enter image description here



                    Click Okay. Choose Object > Expand Appearance, then `Ungroup* (twice), and delete what you don't want.



                    enter image description here






                    share|improve this answer












                    I would use Effect > Distort & Transform > Transform



                    Draw a vertical row of arrows. The bottom dot is used as a rotation point.



                    enter image description here



                    Group all that.



                    Choose `Effect > Distort & Transform > Transform**



                    Set the Origin point to the Bottom Left:



                    enter image description here



                    Then add the amount of negative degrees you want in the Angle field and the number of copies you want in the Copies field.



                    enter image description here



                    Click Okay. Choose Object > Expand Appearance, then `Ungroup* (twice), and delete what you don't want.



                    enter image description here







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 1 hour ago









                    Scott

                    141k14194400




                    141k14194400




















                        up vote
                        2
                        down vote













                        I would use the script Rotate Toward Point by Hiroyuki Sato. The script rotates the objects in the selection toward the center of the foreground object.



                        Make sure to place the "selected" object (the one you want rotated towards) on the top.



                        Right click → Arrange → Bring to front (Shift+Ctrl+])



                        You just select everything and run the script.



                                 Before               After



                        enter image description hereenter image description here



                        (This video also shows the script in action - first he distributes them along the path and then rotates them towards the center person)




                        enter image description here




                        Code Below



                        // rotateTowardPoint.jsx

                        // rotates the objects in the selection toward the center of the foreround object.
                        // USAGE: select the objects and run this script.

                        // test env: Adobe Illustrator CC (Win/Mac)

                        // Copyright(c) 2014 Hiroyuki Sato
                        // http://shspage.blogspot.jp/
                        // This script is distributed under the MIT License.
                        // See the LICENSE file for details.

                        // Fri, 14 Feb 2014 21:08:40 +0900

                        function main()
                        // settings:
                        // extract_groups: rotates each item in the groups, otherwise rotates each groups (checkbox value)
                        // show_dialog: shows a dialog before execution, otherwise shows no dialog
                        var conf =
                        extract_groups : false,
                        show_dialog : true


                        if(documents.length < 1) return;

                        var sels = activeDocument.selection;
                        if( sels.length < 2 ) return;

                        if( conf.show_dialog)
                        var win = new Window("dialog", "rotateTowardPoint");
                        win.alignChildren = "fill";

                        win.chk = win.add("checkbox", undefined, "extract groups");

                        win.btnGroup = win.add("group", undefined );
                        win.btnGroup.alignment = "center";
                        win.btnGroup.okBtn = win.btnGroup.add("button", undefined, "OK");
                        win.btnGroup.cancelBtn = win.btnGroup.add("button", undefined, "Cancel");

                        var getValues = function()
                        conf.extract_groups = win.chk.value;


                        win.btnGroup.okBtn.onClick = function()
                        getValues();
                        rotateToPoint( sels, conf );
                        win.close();


                        win.btnGroup.cancelBtn.onClick = function()
                        win.close();

                        win.show();
                        else
                        rotateToPoint( sels, conf );



                        function rotateToPoint( sels, conf )
                        var target = sels[0];

                        if( conf.extract_groups )
                        sels = extractGroup( sels.slice(1) );
                        else
                        sels = sels.slice(1);


                        // gets the center of the foreground object.
                        // the other objects are rotated toward this point.
                        var point = getCenter( target );

                        for(var i = 0; i < sels.length; i++)
                        var t = getAngle( point, getCenter(sels[i]));
                        sels[i].rotate( t - 90, true, true, true, true, Transformation.CENTER );



                        function getCenter(p)
                        return [p.left + p.width / 2,
                        p.top - p.height / 2];


                        function getAngle(p1, p2)
                        return Math.atan2(p2[1] - p1[1],
                        p2[0] - p1[0]) * 180 / Math.PI;


                        function extractGroup( s, r )
                        if( r == undefined ) r = ;

                        for( var i = 0; i < s.length; i++)
                        if( s[i].typename == "GroupItem" )
                        extractGroup( s[i].pageItems, r );
                        else
                        r.push( s[i] );



                        return r;


                        main();





                        share|improve this answer


























                          up vote
                          2
                          down vote













                          I would use the script Rotate Toward Point by Hiroyuki Sato. The script rotates the objects in the selection toward the center of the foreground object.



                          Make sure to place the "selected" object (the one you want rotated towards) on the top.



                          Right click → Arrange → Bring to front (Shift+Ctrl+])



                          You just select everything and run the script.



                                   Before               After



                          enter image description hereenter image description here



                          (This video also shows the script in action - first he distributes them along the path and then rotates them towards the center person)




                          enter image description here




                          Code Below



                          // rotateTowardPoint.jsx

                          // rotates the objects in the selection toward the center of the foreround object.
                          // USAGE: select the objects and run this script.

                          // test env: Adobe Illustrator CC (Win/Mac)

                          // Copyright(c) 2014 Hiroyuki Sato
                          // http://shspage.blogspot.jp/
                          // This script is distributed under the MIT License.
                          // See the LICENSE file for details.

                          // Fri, 14 Feb 2014 21:08:40 +0900

                          function main()
                          // settings:
                          // extract_groups: rotates each item in the groups, otherwise rotates each groups (checkbox value)
                          // show_dialog: shows a dialog before execution, otherwise shows no dialog
                          var conf =
                          extract_groups : false,
                          show_dialog : true


                          if(documents.length < 1) return;

                          var sels = activeDocument.selection;
                          if( sels.length < 2 ) return;

                          if( conf.show_dialog)
                          var win = new Window("dialog", "rotateTowardPoint");
                          win.alignChildren = "fill";

                          win.chk = win.add("checkbox", undefined, "extract groups");

                          win.btnGroup = win.add("group", undefined );
                          win.btnGroup.alignment = "center";
                          win.btnGroup.okBtn = win.btnGroup.add("button", undefined, "OK");
                          win.btnGroup.cancelBtn = win.btnGroup.add("button", undefined, "Cancel");

                          var getValues = function()
                          conf.extract_groups = win.chk.value;


                          win.btnGroup.okBtn.onClick = function()
                          getValues();
                          rotateToPoint( sels, conf );
                          win.close();


                          win.btnGroup.cancelBtn.onClick = function()
                          win.close();

                          win.show();
                          else
                          rotateToPoint( sels, conf );



                          function rotateToPoint( sels, conf )
                          var target = sels[0];

                          if( conf.extract_groups )
                          sels = extractGroup( sels.slice(1) );
                          else
                          sels = sels.slice(1);


                          // gets the center of the foreground object.
                          // the other objects are rotated toward this point.
                          var point = getCenter( target );

                          for(var i = 0; i < sels.length; i++)
                          var t = getAngle( point, getCenter(sels[i]));
                          sels[i].rotate( t - 90, true, true, true, true, Transformation.CENTER );



                          function getCenter(p)
                          return [p.left + p.width / 2,
                          p.top - p.height / 2];


                          function getAngle(p1, p2)
                          return Math.atan2(p2[1] - p1[1],
                          p2[0] - p1[0]) * 180 / Math.PI;


                          function extractGroup( s, r )
                          if( r == undefined ) r = ;

                          for( var i = 0; i < s.length; i++)
                          if( s[i].typename == "GroupItem" )
                          extractGroup( s[i].pageItems, r );
                          else
                          r.push( s[i] );



                          return r;


                          main();





                          share|improve this answer
























                            up vote
                            2
                            down vote










                            up vote
                            2
                            down vote









                            I would use the script Rotate Toward Point by Hiroyuki Sato. The script rotates the objects in the selection toward the center of the foreground object.



                            Make sure to place the "selected" object (the one you want rotated towards) on the top.



                            Right click → Arrange → Bring to front (Shift+Ctrl+])



                            You just select everything and run the script.



                                     Before               After



                            enter image description hereenter image description here



                            (This video also shows the script in action - first he distributes them along the path and then rotates them towards the center person)




                            enter image description here




                            Code Below



                            // rotateTowardPoint.jsx

                            // rotates the objects in the selection toward the center of the foreround object.
                            // USAGE: select the objects and run this script.

                            // test env: Adobe Illustrator CC (Win/Mac)

                            // Copyright(c) 2014 Hiroyuki Sato
                            // http://shspage.blogspot.jp/
                            // This script is distributed under the MIT License.
                            // See the LICENSE file for details.

                            // Fri, 14 Feb 2014 21:08:40 +0900

                            function main()
                            // settings:
                            // extract_groups: rotates each item in the groups, otherwise rotates each groups (checkbox value)
                            // show_dialog: shows a dialog before execution, otherwise shows no dialog
                            var conf =
                            extract_groups : false,
                            show_dialog : true


                            if(documents.length < 1) return;

                            var sels = activeDocument.selection;
                            if( sels.length < 2 ) return;

                            if( conf.show_dialog)
                            var win = new Window("dialog", "rotateTowardPoint");
                            win.alignChildren = "fill";

                            win.chk = win.add("checkbox", undefined, "extract groups");

                            win.btnGroup = win.add("group", undefined );
                            win.btnGroup.alignment = "center";
                            win.btnGroup.okBtn = win.btnGroup.add("button", undefined, "OK");
                            win.btnGroup.cancelBtn = win.btnGroup.add("button", undefined, "Cancel");

                            var getValues = function()
                            conf.extract_groups = win.chk.value;


                            win.btnGroup.okBtn.onClick = function()
                            getValues();
                            rotateToPoint( sels, conf );
                            win.close();


                            win.btnGroup.cancelBtn.onClick = function()
                            win.close();

                            win.show();
                            else
                            rotateToPoint( sels, conf );



                            function rotateToPoint( sels, conf )
                            var target = sels[0];

                            if( conf.extract_groups )
                            sels = extractGroup( sels.slice(1) );
                            else
                            sels = sels.slice(1);


                            // gets the center of the foreground object.
                            // the other objects are rotated toward this point.
                            var point = getCenter( target );

                            for(var i = 0; i < sels.length; i++)
                            var t = getAngle( point, getCenter(sels[i]));
                            sels[i].rotate( t - 90, true, true, true, true, Transformation.CENTER );



                            function getCenter(p)
                            return [p.left + p.width / 2,
                            p.top - p.height / 2];


                            function getAngle(p1, p2)
                            return Math.atan2(p2[1] - p1[1],
                            p2[0] - p1[0]) * 180 / Math.PI;


                            function extractGroup( s, r )
                            if( r == undefined ) r = ;

                            for( var i = 0; i < s.length; i++)
                            if( s[i].typename == "GroupItem" )
                            extractGroup( s[i].pageItems, r );
                            else
                            r.push( s[i] );



                            return r;


                            main();





                            share|improve this answer














                            I would use the script Rotate Toward Point by Hiroyuki Sato. The script rotates the objects in the selection toward the center of the foreground object.



                            Make sure to place the "selected" object (the one you want rotated towards) on the top.



                            Right click → Arrange → Bring to front (Shift+Ctrl+])



                            You just select everything and run the script.



                                     Before               After



                            enter image description hereenter image description here



                            (This video also shows the script in action - first he distributes them along the path and then rotates them towards the center person)




                            enter image description here




                            Code Below



                            // rotateTowardPoint.jsx

                            // rotates the objects in the selection toward the center of the foreround object.
                            // USAGE: select the objects and run this script.

                            // test env: Adobe Illustrator CC (Win/Mac)

                            // Copyright(c) 2014 Hiroyuki Sato
                            // http://shspage.blogspot.jp/
                            // This script is distributed under the MIT License.
                            // See the LICENSE file for details.

                            // Fri, 14 Feb 2014 21:08:40 +0900

                            function main()
                            // settings:
                            // extract_groups: rotates each item in the groups, otherwise rotates each groups (checkbox value)
                            // show_dialog: shows a dialog before execution, otherwise shows no dialog
                            var conf =
                            extract_groups : false,
                            show_dialog : true


                            if(documents.length < 1) return;

                            var sels = activeDocument.selection;
                            if( sels.length < 2 ) return;

                            if( conf.show_dialog)
                            var win = new Window("dialog", "rotateTowardPoint");
                            win.alignChildren = "fill";

                            win.chk = win.add("checkbox", undefined, "extract groups");

                            win.btnGroup = win.add("group", undefined );
                            win.btnGroup.alignment = "center";
                            win.btnGroup.okBtn = win.btnGroup.add("button", undefined, "OK");
                            win.btnGroup.cancelBtn = win.btnGroup.add("button", undefined, "Cancel");

                            var getValues = function()
                            conf.extract_groups = win.chk.value;


                            win.btnGroup.okBtn.onClick = function()
                            getValues();
                            rotateToPoint( sels, conf );
                            win.close();


                            win.btnGroup.cancelBtn.onClick = function()
                            win.close();

                            win.show();
                            else
                            rotateToPoint( sels, conf );



                            function rotateToPoint( sels, conf )
                            var target = sels[0];

                            if( conf.extract_groups )
                            sels = extractGroup( sels.slice(1) );
                            else
                            sels = sels.slice(1);


                            // gets the center of the foreground object.
                            // the other objects are rotated toward this point.
                            var point = getCenter( target );

                            for(var i = 0; i < sels.length; i++)
                            var t = getAngle( point, getCenter(sels[i]));
                            sels[i].rotate( t - 90, true, true, true, true, Transformation.CENTER );



                            function getCenter(p)
                            return [p.left + p.width / 2,
                            p.top - p.height / 2];


                            function getAngle(p1, p2)
                            return Math.atan2(p2[1] - p1[1],
                            p2[0] - p1[0]) * 180 / Math.PI;


                            function extractGroup( s, r )
                            if( r == undefined ) r = ;

                            for( var i = 0; i < s.length; i++)
                            if( s[i].typename == "GroupItem" )
                            extractGroup( s[i].pageItems, r );
                            else
                            r.push( s[i] );



                            return r;


                            main();






                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited 1 hour ago

























                            answered 1 hour ago









                            WELZ

                            5,37841553




                            5,37841553




















                                up vote
                                0
                                down vote













                                It can be made duplicating arrow blends and replacing spines



                                enter image description here



                                • Create the spines blending two angles, expand them and ungroup

                                spines



                                • Create a blend between a horizontal and vertical arrow

                                enter image description here



                                • Select the arrow blends and one of the angles and replace spine

                                spine



                                Result



                                result






                                share|improve this answer


























                                  up vote
                                  0
                                  down vote













                                  It can be made duplicating arrow blends and replacing spines



                                  enter image description here



                                  • Create the spines blending two angles, expand them and ungroup

                                  spines



                                  • Create a blend between a horizontal and vertical arrow

                                  enter image description here



                                  • Select the arrow blends and one of the angles and replace spine

                                  spine



                                  Result



                                  result






                                  share|improve this answer
























                                    up vote
                                    0
                                    down vote










                                    up vote
                                    0
                                    down vote









                                    It can be made duplicating arrow blends and replacing spines



                                    enter image description here



                                    • Create the spines blending two angles, expand them and ungroup

                                    spines



                                    • Create a blend between a horizontal and vertical arrow

                                    enter image description here



                                    • Select the arrow blends and one of the angles and replace spine

                                    spine



                                    Result



                                    result






                                    share|improve this answer














                                    It can be made duplicating arrow blends and replacing spines



                                    enter image description here



                                    • Create the spines blending two angles, expand them and ungroup

                                    spines



                                    • Create a blend between a horizontal and vertical arrow

                                    enter image description here



                                    • Select the arrow blends and one of the angles and replace spine

                                    spine



                                    Result



                                    result







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited 1 hour ago

























                                    answered 1 hour ago









                                    Danielillo

                                    15.3k12257




                                    15.3k12257



























                                         

                                        draft saved


                                        draft discarded















































                                         


                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function ()
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgraphicdesign.stackexchange.com%2fquestions%2f116215%2fcorner-pointing-arrow-grid%23new-answer', 'question_page');

                                        );

                                        Post as a guest













































































                                        Popular posts from this blog

                                        How to check contact read email or not when send email to Individual?

                                        Displaying single band from multi-band raster using QGIS

                                        How many registers does an x86_64 CPU actually have?