{"id":3404,"date":"2014-11-10T02:04:34","date_gmt":"2014-11-09T23:04:34","guid":{"rendered":"http:\/\/unitycoder.com\/blog\/?p=3404"},"modified":"2014-11-11T00:42:22","modified_gmt":"2014-11-10T21:42:22","slug":"draw-ascii-sphere","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2014\/11\/10\/draw-ascii-sphere\/","title":{"rendered":"Draw Ascii Sphere"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3409\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2014\/11\/10\/draw-ascii-sphere\/draw_text_sphere_ascii_unity_csharp\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2014\/11\/draw_text_sphere_ascii_unity_csharp.jpg?fit=680%2C601&amp;ssl=1\" data-orig-size=\"680,601\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"draw_text_sphere_ascii_unity_csharp\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2014\/11\/draw_text_sphere_ascii_unity_csharp.jpg?fit=680%2C601&amp;ssl=1\" class=\"alignnone size-full wp-image-3409\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2014\/11\/draw_text_sphere_ascii_unity_csharp.jpg?resize=680%2C601\" alt=\"draw_text_sphere_ascii_unity_csharp\" width=\"680\" height=\"601\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2014\/11\/draw_text_sphere_ascii_unity_csharp.jpg?w=680&amp;ssl=1 680w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2014\/11\/draw_text_sphere_ascii_unity_csharp.jpg?resize=300%2C265&amp;ssl=1 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/p>\n<p>Just for fun tried to convert this LUA script into unity c#,<br \/>\nOriginal source: <a title=\"http:\/\/rosettacode.org\/wiki\/Draw_a_sphere#Lua\" href=\"http:\/\/rosettacode.org\/wiki\/Draw_a_sphere#Lua\" target=\"_blank\">http:\/\/rosettacode.org\/wiki\/Draw_a_sphere#Lua<\/a><\/p>\n<p>*Note this source outputs the file into spheredump.txt file (at project root folder)<\/p>\n<p><strong>C# Source ( DrawSphere.cs ) <\/strong>*not optimized..<strong><br \/>\n<\/strong><\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n\r\n\/\/ ORIGINAL SOURCE: http:\/\/rosettacode.org\/wiki\/Draw_a_sphere#Lua\r\n\r\nusing UnityEngine;\r\nusing System.Collections;\r\n\r\npublic class DrawSphere : MonoBehaviour\r\n{\r\n\r\n\u00a0\u00a0 \u00a0char&#x5B;] shades = new char&#x5B;]{'.', ':', '!', '*', 'o', 'e', '&amp;', '#', '%', '@'};\r\n\u00a0\u00a0 \u00a0Vector3 lightVec;\r\n\r\n\u00a0\u00a0 \u00a0void Start ()\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0lightVec = normalizer(30, 30, -50);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0draw_sphere (20, 4, 0.1f);\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0void draw_sphere (float radius, float k, float ambient)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0string lineTemp = &quot;&quot;;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0for (int i = (int)Mathf.Floor(-radius);i&lt;-(int)Mathf.Floor(-radius);i++)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0int x = (int)(i + 0.5f);\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0for (int j = (int)Mathf.Floor(-2*radius);j&lt;(int)-Mathf.Floor(-2*radius);j++)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float y = (j \/ 2 + 0.5f);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if ((Mathf.Pow(x,2) + Mathf.Pow(y,2)) &lt;= (Mathf.Pow(radius,2)))\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Vector3 vec = normalizer(x, y, Mathf.Sqrt( Mathf.Pow(radius,2)-Mathf.Pow(x,2)-Mathf.Pow(y,2)));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float b = Mathf.Pow(dotter(lightVec,vec),k) + ambient;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float intensity = (int)(Mathf.Floor((1 - b) * shades.Length));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0lineTemp = lineTemp + ((intensity&gt;-1)?shades&#x5B;(int)intensity]:shades&#x5B;0]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}else{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0lineTemp = lineTemp + &quot; &quot;;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0lineTemp = lineTemp+System.Environment.NewLine;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ output to textfile\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0System.IO.File.WriteAllText(&quot;spheredump.txt&quot;, lineTemp);\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0Vector3 normalizer(float vec1,float vec2, float vec3)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float&#x5B;] vec = new float&#x5B;]{0,vec1,vec2,vec3};\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float len = Mathf.Sqrt( Mathf.Pow(vec&#x5B;1],2) + Mathf.Pow(vec&#x5B;2],2) + Mathf.Pow(vec&#x5B;3],2));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return new Vector3 (vec&#x5B;1]\/len, vec&#x5B;2]\/len, vec&#x5B;3]\/len);\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0float dotter(Vector3 vec1, Vector3 vec2)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0float d = (vec1&#x5B;0]*vec2&#x5B;0] + vec1&#x5B;1]*vec2&#x5B;1] + vec1&#x5B;2]*vec2&#x5B;2]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return d&lt;0?-d:0;\r\n\u00a0\u00a0 \u00a0}\r\n}\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Just for fun tried to convert this LUA script into unity c#, Original source: http:\/\/rosettacode.org\/wiki\/Draw_a_sphere#Lua *Note this source outputs the file into spheredump.txt file (at project root folder) C# Source ( DrawSphere.cs ) *not optimized.. \/\/ ORIGINAL SOURCE: http:\/\/rosettacode.org\/wiki\/Draw_a_sphere#Lua using UnityEngine; using System.Collections; public class [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[23,3],"tags":[673,323],"class_list":["post-3404","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-functions-unity3d","category-unity3d","tag-ascii","tag-sphere"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2014\/11\/draw_text_sphere_ascii_unity_csharp.jpg?fit=680%2C601&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-SU","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/3404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/comments?post=3404"}],"version-history":[{"count":3,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/3404\/revisions"}],"predecessor-version":[{"id":3412,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/3404\/revisions\/3412"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/3409"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=3404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=3404"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=3404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}