{"id":386,"date":"2015-10-26T11:00:34","date_gmt":"2015-10-26T02:00:34","guid":{"rendered":"http:\/\/www.takaya-com.jp\/archives\/?p=386"},"modified":"2015-10-26T10:41:19","modified_gmt":"2015-10-26T01:41:19","slug":"svg_css3_transform_sp5","status":"publish","type":"post","link":"https:\/\/takaya-com.jp\/archives\/2015\/10\/svg_css3_transform_sp5\/","title":{"rendered":"JavaScript\u3067SVG\u306epolygon\u3092\u751f\u6210\u3057\u3001CSS\u306etransform\u3067\u591a\u89d2\u9310\u306b\u3059\u308b"},"content":{"rendered":"<p><!-- \u672c\u6587 --><\/p>\n<p><a href=\"http:\/\/www.takaya-com.jp\/archives\/2015\/10\/svg_css3_transform_sp4\/\">CSS\u306etransform\u3067\u591a\u89d2\u67f1<\/a>\u3092\u7d44\u307f\u7acb\u3066\u308b\u5fdc\u7528\u3067\u3001\u5074\u9762\u3092\u4e09\u89d2\u5f62\u306b\u3059\u308b\u3053\u3068\u3067\u89d2\u9310\u3092\u3064\u304f\u3063\u3066\u3044\u307e\u3059\u3002\u9ad8\u3055\u306e\u6307\u5b9a\u306fcss transform\u306escaleY()\u3067\u7e26\u65b9\u5411\u306b\u4f38\u3073\u7e2e\u307f\u3055\u305b\u308b\u3053\u3068\u3067\u8abf\u6574\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u89d2\u6570\u3092\u6307\u5b9a\u3059\u308b\u3060\u3051\u30673\u89d2\u9310\uff5e\u5186\u9310\uff08\u305f\u3060\u3057\u3068\u3066\u3082\u51e6\u7406\u304c\u91cd\u305f\u304f\u306a\u308b\uff09\u307e\u3067\u751f\u6210\u3067\u304d\u307e\u3059\u3002<br \/>\npolygon\u3001triangle\u306e\u8272\u3082\u6307\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u305f\u3002\n<\/p>\n<p>  <!--more--><\/p>\n<p>\n\u3053\u306e\u30b3\u30fc\u30c9\u3067\u30011\u30da\u30fc\u30b8\u4e2d\u306b\u8907\u6570\u306e\u591a\u89d2\u9310\u3092\u8868\u793a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n\u63cf\u753b\u5148\u306ediv\u306bcss\u306etransform\u3092\u304b\u3051\u308b\u3053\u3068\u3067\u89d2\u9310\u3092\u56de\u8ee2\u3055\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3002<br \/>\n\uff08\u4eca\u56de\u306f\u7acb\u4f53\u3068\u308f\u304b\u308a\u3084\u3059\u3044\u3088\u3046\u306b\u5de6\u5074\u306e\u89d2\u9310\u3092\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3055\u305b\u3066\u3042\u308a\u307e\u3059\uff09\n<\/p>\n<p>\u2193\u4ee5\u4e0b\u304c\u5b9f\u969b\u306e\u30bd\u30fc\u30b9\u30b5\u30f3\u30d7\u30eb\u3067\u3059\u3002<\/p>\n<p>\u25bcJavaScript<\/p>\n<pre class=\"lang:js decode:true \" title=\"JavaScript\" >\r\n<script>\r\n\/\/\tdrawPyramid(\"\u63cf\u753b\u3059\u308bdiv\u540d\",\u89d2\u5f62\uff08\u6570\u5024\uff09,\u5074\u9762\u306e\u9ad8\u3055\u306e\u534a\u5206\u306f100\u3067\u56fa\u5b9a,\r\n\t\/\/\t\"\u5e95\u9762\u306epolygon\u306e\u8272\",\"\u5074\u9762\u306etriangle\u306e\u8272\",\u67a0\u7dda\u306e\u8272\",\u67a0\u7dda\u306e\u592a\u3055);\r\nwindow.onload = function () {\r\n\tdrawPyramid(\"box_1\",6,100,\"rgba(0,255,255,0.7)\",\"rgba(0,0,255,0.5)\",\"rgba(0,0,127,0.7)\",3);\r\n\tdrawPyramid(\"box_2\",30,100,\"rgba(255,63,63,0.7)\",\"rgba(255,167,64,0.5)\",\"rgba(0,0,127,0.7)\",3);\r\n}\r\n\r\nfunction drawPyramid(root,pg_num,rect_h,polygon_c,rect_c,stroke_c,stroke_w){\r\n\tvar root_div = document.getElementById(root);\r\n\tvar pg_x = new Array();\r\n\tvar pg_y = new Array();\r\n\tvar tr_x = new Array();\r\n\tvar tr_y = new Array();\r\n\tvar pg_points = new String();\r\n\tvar tr_points = new String();\r\n\tvar rects_val = new Object;\r\n\tvar rects_name = new Array();\r\n\tvar triangles_val = new Object;\r\n\tvar triangles_name = new Array();\r\n\tvar pgc_x = 0;\r\n\tvar pgc_y = 0;\r\n\t\/\/\tcoc_r:\u30dd\u30ea\u30b4\u30f3\u3092\u63cf\u753b\u3059\u308b\u969b\u306e\u5186\u306e\u534a\u5f84\r\n\tvar coc_r = 100;\r\n\t\/\/\t\u4e0a\u9762\u30fb\u5e95\u9762polygon\u3092\u4e2d\u5fc3\u304b\u3089\u79fb\u52d5\u3055\u305b\u308b\u91cf\uff08\u5074\u9762rect\u306e\u7e26\u306f\u3053\u306e\u5024\u306e2\u500d\uff09\t\r\n\tvar r_ht = rect_h;\r\n\tvar pg_pt = pg_num;\r\n\tvar angle = 360\/pg_pt;\/\/1\u89d2\u3042\u305f\u308a\u306e\u89d2\u5ea6\r\n\t\r\n\t\/\/\tpg_points:polygon\u751f\u6210\u7528\u306ex,y\u5ea7\u6a19\u306e\u53d6\u5f97\r\n\t\/\/\tpg_x,pg_y:\u518d\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u914d\u5217\u306b\u3082\u4fdd\u5b58\r\n\tfor( i = 0 ; i < pg_pt ; i++ ){\r\n\t\tradian = (angle*i+(180-angle)\/2) * Math.PI \/ 180;\r\n\t\tcos_A = Math.cos(radian);\r\n\t\tsin_A = Math.sin(radian);\r\n\t\tx = cos_A * coc_r + coc_r;\r\n\t\ty = sin_A * coc_r + coc_r;\r\n\t\tpg_x.push(x);\r\n\t\tpg_y.push(y);\r\n\t\tpg_points += pg_x[i]+\",\"+pg_y[i]+\" \";\r\n\t}\r\n\r\n\t\/\/\t\u5074\u9762triangle\u306e\u5024\u306e\u53d6\u5f97\r\n\t\/\/\u3000r_wt:\u5074\u9762\u306e\u5e45\u306e1\/2\u306e\u5024.\uff08x0,x1\u306e\u5dee\u306e2\u4e57 + y0,y1\u306e\u5dee\u306e2\u4e57)\u306e\u5e73\u65b9\u6839 = 2\u70b9\u9593\u306e\u8ddd\u96e2\u306e1\/2\r\n\tvar r_wt = Math.sqrt(((Math.pow(pg_x[0]-pg_x[1]),2)+Math.pow((pg_x[0]-pg_x[1]),2)))\/2;\r\n\t\/\/rect\u306e\u7e26\u6a2a\u3092\u540c\u3058\u306b\u3059\u308b\u5834\u5408\u306e\u51e6\u7406.\r\n\tif(r_ht==\"eq\"){r_ht=r_wt;}\r\n\t\/\/\u3000triangles_val.r:\uff08\u4e2d\u5fc3\u304b\u3089\u89d2\u307e\u3067\u306e\u9577\u3055coc_r\u306e2\u4e57 - rect\u306e\u5e45\u306e1\/2\u306e2\u4e57\uff09\u306e\u5e73\u65b9\u6839 = triangle\u3092\u4e2d\u5fc3\u304b\u3089\u79fb\u52d5\u3055\u305b\u308b\u91cf\r\n\ttriangles_val.r = Math.sqrt(Math.pow(coc_r,2)-Math.pow(r_wt,2));\r\n\t\/\/\ttriangles_val.deg:triangle\u3092\u4e2d\u5fc3\u306b\u5411\u3051\u3066\u50be\u3051\u308b\u89d2\u5ea6\u3002acos(\u5e95\u8fba\/\u659c\u8fba)\r\n\ttriangles_val.xdeg=90-(Math.acos(triangles_val.r\/(r_ht*2))) * 180 \/ Math.PI;\r\n\tvar  pyramid_ht = Math.sqrt(Math.pow(r_ht*2,2)-Math.pow(triangles_val.r,2))\/2;\r\n\t\/\/\ttriangles_val.x,y:\u5186\u306e\u4e2d\u5fc3\u304b\u3089rect\u306e\u7e26\u6a2a\u3092\u5f15\u3044\u305f\u5024\u3002\u3053\u3053\u304b\u3089\u63cf\u304d\u59cb\u3081\u308b\u3053\u3068\u3067rect\u306e\u4e2d\u5fc3\u304ccoc_r\u306b\u304f\u308b\r\n\ttr_x=[coc_r-r_wt,coc_r+r_wt,coc_r];\r\n\ttr_y=[coc_r+r_ht,coc_r*2,coc_r-r_ht];\t\/\/[2]\u306e\u5024\u304c\u4e09\u89d2\u306e\u9802\u70b9\u306e\u9ad8\u3055\u3002\r\n\ttr_points+= tr_x[0] +\",\"+ tr_y[0] +\" \"+ tr_x[1] +\",\"+ tr_y[1] +\" \"+ tr_x[2] +\",\"+ tr_y[2];\r\n\tconsole.log(tr_points);\r\n\r\n\t\/\/\t\u89d2\u6570\u679a\u306e\u5074\u9762triangle\u3092\u751f\u6210\r\n\tfor(i=0 ; i<pg_pt ; i++){\r\n\t\tmake_triangle(\"tri_\"+i+\"_\"+root,tr_points);\r\n\t\ttriangles_name.push(document.getElementById(\"tri_\"+i+\"_\"+root));\r\n\t\t\/\/\t\u89d2\u6570\u304c\u5947\u6570\u306e\u6642\u306b\u5e95\u8fba\u3092\u6c34\u5e73\u306b\u3059\u308b\u305f\u3081\u306b\u89d2\u5ea6\u3092\u8abf\u6574\r\n\t\ttriangles_val.ydeg=angle*i;\r\n\t\tvar tf =\"rotateY(\"+triangles_val.ydeg+\"deg) translateZ(\"+triangles_val.r\/2+\"px) rotateX(\"+triangles_val.xdeg+\"deg)\";\r\n\t\ttriangles_name[i].style.transform = tf;\r\n\t}\r\n\r\n\t\/\/\t\u4e0b\u9762\u306e\u30dd\u30ea\u30b4\u30f3\u306e\u751f\u6210.\u5947\u6570\u89d2\u306e\u5834\u5408X\u3092180\u5ea6\u56de\u8ee2\u3055\u305b\u308b\u3068\u9802\u70b9\u304c\u53cd\u5bfe\u5411\u304d\u306b\u306a\u308b\u306e\u3067Z\u3082180\u5ea6\u56de\u8ee2\r\n\tmake_polygon(\"pg_btm\"+root,pg_points);\r\n\thoge = document.getElementById(\"pg_btm\"+root);\r\n\thoge.style.transform = \"rotateX(270deg) translateZ(\"+pyramid_ht+\"px) rotateZ(180deg)\";\r\n\r\n\r\n\t\/\/\t\u5e95\u9762polygon\u751f\u6210\r\n\tfunction make_polygon(svg_idname,pg_points){\r\n\t\tvar SVG = \"http:\/\/www.w3.org\/2000\/svg\";\r\n\t\tvar svg = document.createElementNS(SVG,\"svg\");\r\n\t\tsvg.setAttribute(\"id\",svg_idname);\r\n\t\tsvg.setAttribute(\"viewBox\",\"0 0 200 200\");\r\n\t\tvar pg = document.createElementNS(SVG, \"polygon\");\r\n\t\tpg.setAttribute(\"points\",pg_points);\r\n\t\tpg.setAttribute(\"fill\",polygon_c);\r\n\t\tpg.setAttribute(\"stroke-width\",stroke_w);\r\n\t\tsvg.appendChild(pg);\r\n\t\troot_div.appendChild(svg);\r\n\t}\r\n\r\n\t\/\/\t\u5074\u9762triangle\u751f\u6210\r\n\tfunction make_triangle(svg_idname,pg_points){\r\n\t\tvar SVG = \"http:\/\/www.w3.org\/2000\/svg\";\r\n\t\tvar svg = document.createElementNS(SVG,\"svg\");\r\n\t\tsvg.setAttribute(\"id\",svg_idname);\r\n\t\tsvg.setAttribute(\"viewBox\",\"0 0 200 200\");\r\n\t\tvar tr = document.createElementNS(SVG, \"polygon\");\r\n\t\ttr.setAttribute(\"points\",pg_points);\r\n\t\ttr.setAttribute(\"fill\",rect_c);\r\n\t\ttr.setAttribute(\"stroke-width\",stroke_w);\r\n\t\tsvg.appendChild(tr);\r\n\t\troot_div.appendChild(svg);\r\n\t}\r\n\r\n}\r\n\r\n\tvar degX =0;\r\n\tvar degY =0;\r\n\tvar degZ =0;\r\n  \r\n\tsetInterval(\"draw()\",66);\r\n\/\/\tdiv#box_1\u3092\u56de\u8ee2\u3055\u305b\u308b\r\nfunction draw(){\r\n\tdegX=(degX+1+360)%360;\r\n\tdegY=(degY+0.9+360)%360;\r\n\tdegZ=(degZ+1.1+360)%360;\r\n\txyz=\"rotateX(\"+degX+\"deg) rotateY(\"+degY+\"deg) rotateZ(\"+degZ+\"deg)\";\r\n\tvar container = document.getElementById(\"box_1\");\r\n\tcontainer.style.transform = xyz;\r\n}\r\n<\/script>\r\n<\/pre>\n<p>\u25bcCSS<\/p>\n<pre class=\"lang:css decode:true \" title=\"CSS\" >\r\ndiv{\r\n\ttransform-style: preserve-3d;\r\n\twidth:250px;\r\n\theight:250px;\r\n\tposition:relative;\r\n\ttransform-origin:100px 140px;\r\n\ttransform:rotateX(-30deg) rotateY(-20deg) scaleY(1.2);\r\n\tpadding:25px;\r\n\tfloat:left;\r\n}\r\nsvg,polygon{\r\n\ttransform-style: preserve-3d;\r\n\tposition:absolute;\r\n\twidth:200px;\r\n\theight:200px;\r\n}\r\n<\/pre>\n<p>\u25bcHTML<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"XHTML\" >\r\n<div id=\"box_1\">\r\n<\/div>\r\n<div id=\"box_2\">\r\n<\/div>\r\n<\/pre>\n<p><a href=\"http:\/\/www.takaya-com.jp\/archives\/demo\/svg_css3_transform_sp5\/\" target=\"_blank\">\u30c7\u30e2\u30da\u30fc\u30b8\u306f\u3001\u3053\u3061\u3089<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CSS\u306etransform\u3067\u591a\u89d2\u67f1\u3092\u7d44\u307f\u7acb\u3066\u308b\u5fdc\u7528\u3067\u3001\u5074\u9762\u3092\u4e09\u89d2\u5f62\u306b\u3059\u308b\u3053\u3068\u3067\u89d2\u9310\u3092\u3064\u304f\u3063\u3066\u3044\u307e\u3059\u3002\u9ad8\u3055\u306e\u6307\u5b9a\u306fcss transform\u306escaleY()\u3067\u7e26\u65b9\u5411\u306b\u4f38\u3073\u7e2e\u307f\u3055\u305b\u308b\u3053\u3068\u3067\u8abf\u6574\u3057\u3066\u3044\u307e\u3059\u3002 \u89d2\u6570\u3092\u6307\u5b9a\u3059\u308b\u3060 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,3],"tags":[],"_links":{"self":[{"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/posts\/386"}],"collection":[{"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/comments?post=386"}],"version-history":[{"count":3,"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/posts\/386\/revisions"}],"predecessor-version":[{"id":389,"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/posts\/386\/revisions\/389"}],"wp:attachment":[{"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/media?parent=386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/categories?post=386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/takaya-com.jp\/archives\/wp-json\/wp\/v2\/tags?post=386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}