{"id":389,"date":"2012-01-02T16:36:35","date_gmt":"2012-01-02T13:36:35","guid":{"rendered":"http:\/\/unitycoder.com\/blog\/?p=389"},"modified":"2013-08-15T21:59:50","modified_gmt":"2013-08-15T18:59:50","slug":"precalculated-sin-cos-arrays","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2012\/01\/02\/precalculated-sin-cos-arrays\/","title":{"rendered":"Precalculated Sin Cos Arrays"},"content":{"rendered":"<p>In the old days (blitz basic, qbasic..) these lookup tables were quite useful!<\/p>\n<p><strong>Download test scene:<\/strong> (moving sphere..Note! saved with Unity3D v3.5)<br \/>\n<a title=\"Download Source\" href=\"http:\/\/unitycoder.com\/download\/index2.php?link=58&amp;uid=un1t3c0d5r\" target=\"_blank\">mSinCosTables.unitypackage<\/a><\/p>\n<p><strong>Source:<\/strong> (javascript, attach it to some object to see it moving..)<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\/\/ Precalculated SinCos - Unity3D version - mgear - http:\/\/unitycoder.com\/blog\/\r\n\/\/ ORIGINAL SOURCE: &quot;Jim&quot; http:\/\/www.dbfinteractive.com\/forum\/index.php?topic=4772.0\r\n#pragma strict\r\n\r\nprivate var lookupTableSize:int=65536; \/\/ or 1024\r\nprivate var mSin:float&#x5B;]; \/\/ using native .NET arrays (see unity help page for ARRAY)\r\nprivate var mCos:float&#x5B;];\r\nprivate var mconst:float;\r\nprivate var c:float = 0;\r\nprivate var maxrad:float = 2*Mathf.PI;\r\n\r\nfunction Start ()\r\n{\r\n\/\/ init arrays\r\nmCos = new float&#x5B;lookupTableSize];\r\nmSin = new float&#x5B;lookupTableSize];\r\nmconst = lookupTableSize \/ (2*Mathf.PI); \/\/ array index constant\r\n\/\/ build lookup tables\r\nvar angle:float = 0;\r\nfor (var i:int=0;i&lt;lookupTableSize;i++)\r\n{\r\nmSin&#x5B;i] = Mathf.Sin(angle);\r\nmCos&#x5B;i] = Mathf.Cos(angle);\r\nangle += 2*Mathf.PI\/lookupTableSize;\r\n}\r\n}\r\n\r\n\/\/ mainloop\r\nfunction Update ()\r\n{\r\n\/\/ \u00a0\u00a0 \u00a0normal maths\r\n\/\/\u00a0\u00a0 \u00a0transform.position.x = Mathf.Cos(c)*5;\r\n\/\/\u00a0\u00a0 \u00a0transform.position.y = Mathf.Sin(c)*5;\r\n\/\/\u00a0\u00a0 \u00a0c+=0.05;\r\n\r\n\/\/ precalculated\r\ntransform.position.x = getCos(c)*5;\r\ntransform.position.y = getSin(c)*5;\r\nc = Mathf.Repeat(c+0.05,maxrad);\r\n}\r\n\r\n\/\/ helper functions\r\nfunction getSin(radians:float) {return mSin&#x5B;radians * mconst];}\r\nfunction getCos(radians:float) {return mCos&#x5B;radians * mconst];}\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In the old days (blitz basic, qbasic..) these lookup tables were quite useful! Download test scene: (moving sphere..Note! saved with Unity3D v3.5) mSinCosTables.unitypackage Source: (javascript, attach it to some object to see it moving..) \/\/ Precalculated SinCos &#8211; Unity3D version &#8211; mgear &#8211; http:\/\/unitycoder.com\/blog\/ \/\/ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":435,"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":false,"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":[96,95,97,94],"class_list":["post-389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-functions-unity3d","category-unity3d","tag-array","tag-cos","tag-precalculated","tag-sin"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2012\/01\/200px-Lissajous_curve_5by4.svg_.png?fit=200%2C200&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-6h","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/389","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=389"}],"version-history":[{"count":7,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/389\/revisions"}],"predecessor-version":[{"id":2293,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/389\/revisions\/2293"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/435"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}