{"id":4200,"date":"2016-03-01T14:11:43","date_gmt":"2016-03-01T11:11:43","guid":{"rendered":"http:\/\/unitycoder.com\/blog\/?p=4200"},"modified":"2016-09-02T20:58:14","modified_gmt":"2016-09-02T12:58:14","slug":"latitude-longitude-position-on-3d-sphere-v2","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2016\/03\/01\/latitude-longitude-position-on-3d-sphere-v2\/","title":{"rendered":"Latitude Longitude Position On 3D Sphere (V2)"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"4201\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2016\/03\/01\/latitude-longitude-position-on-3d-sphere-v2\/latitude_longitude_unity_1\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2016\/03\/latitude_longitude_unity_1.jpg?fit=678%2C407&amp;ssl=1\" data-orig-size=\"678,407\" 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=\"latitude_longitude_unity_1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2016\/03\/latitude_longitude_unity_1.jpg?fit=678%2C407&amp;ssl=1\" class=\"alignnone size-full wp-image-4201\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2016\/03\/latitude_longitude_unity_1.jpg?resize=678%2C407\" alt=\"latitude_longitude_unity_1\" width=\"678\" height=\"407\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2016\/03\/latitude_longitude_unity_1.jpg?w=678&amp;ssl=1 678w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2016\/03\/latitude_longitude_unity_1.jpg?resize=300%2C180&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>This is just a c# conversion and few updated notes for the old post : <a href=\"http:\/\/unitycoder.com\/blog\/2011\/08\/09\/latitude-longitude-on-3d-sphere\/\" target=\"_blank\">http:\/\/unitycoder.com\/blog\/2011\/08\/09\/latitude-longitude-on-3d-sphere\/<\/a><\/p>\n<p><strong>Instructions<\/strong><br \/>\n&#8211; Attach the script below to your sphere (Unity sphere UV mapping is not suitable so I downloaded this <a href=\"https:\/\/dl.dropboxusercontent.com\/u\/227470828\/UnityCoder\/public\/sphere.obj\" target=\"_blank\">sphere model<\/a> and scaled transform to 5)<br \/>\n&#8211; Add earth texture map to the sphere (its included in the <a href=\"http:\/\/unitycoder.com\/download\/index2.php?link=8&amp;uid=un1t3c0d5r\" target=\"_blank\">old version package<\/a>)<br \/>\n&#8211; Add a marker sphere, scale it to 0.3 or so<br \/>\n&#8211; Assign marker sphere to &#8220;marker&#8221; field on the script<br \/>\n&#8211; Set lat long values in the inspector (default value is for London, get more values from here <a href=\"http:\/\/www.findlatitudeandlongitude.com\/\" target=\"_blank\">www.findlatitudeandlongitude.com<\/a> )<br \/>\n<del>&#8211; Note: Rotate your earth sphere by 180 degrees in Y axis (otherwise marker goes to wrong position)<\/del> *Probably not needed<br \/>\n&#8211; The hit play to test it.<\/p>\n<p><strong>Resources:<\/strong><br \/>\n&#8211; Map texture was taken from somewhere here : <a href=\"http:\/\/visibleearth.nasa.gov\/view_cat.php?categoryID=1484\" target=\"_blank\">http:\/\/visibleearth.nasa.gov\/view_cat.php?categoryID=1484<\/a><br \/>\n&#8211; Original math code is from: <a href=\"http:\/\/www.actionscript.org\/forums\/index.php#post722957\" target=\"_blank\">http:\/\/www.actionscript.org\/forums\/index.php#post722957<\/a> *link broken..<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Script source<\/strong><\/p>\n<style>.gist table { margin-bottom: 0; }<\/style>\n<div style=\"tab-size: 8\" id=\"gist32056089\" class=\"gist\">\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-gistfile1-txt\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-text  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"gistfile1.txt content, created by unitycoder on 10:59AM on March 01, 2016.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"gistfile1.txt\">\n<tr>\n<td id=\"file-gistfile1-txt-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-gistfile1-txt-LC1\" class=\"blob-code blob-code-inner js-file-line\">\/\/ https:\/\/forum.unity.com\/threads\/latitude-and-longitude-coordinates-in-vector-3-unity.1446328\/#post-9066883<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-gistfile1-txt-LC2\" class=\"blob-code blob-code-inner js-file-line\">static readonly float QUAD = .5f * MathF.PI;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-gistfile1-txt-LC3\" class=\"blob-code blob-code-inner js-file-line\">static readonly float TAU = 2f * MathF.PI;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-gistfile1-txt-LC4\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-gistfile1-txt-LC5\" class=\"blob-code blob-code-inner js-file-line\">static public Vector2 FromPolarAngle(float theta)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-gistfile1-txt-LC6\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 =&gt; new Vector2(MathF.Cos(theta), MathF.Sin(theta));<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-gistfile1-txt-LC7\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-gistfile1-txt-LC8\" class=\"blob-code blob-code-inner js-file-line\">static public float ToPolarAngle(Vector2 v)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-gistfile1-txt-LC9\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 =&gt; Mod(MathF.Atan2(v.y, v.x), TAU);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-gistfile1-txt-LC10\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-gistfile1-txt-LC11\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;summary&gt; Conversion from spherical to cartesian coordinates. &lt;\/summary&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-gistfile1-txt-LC12\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;param name=&quot;theta&quot;&gt; Polar angle 0..Tau (top-down). &lt;\/param&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-gistfile1-txt-LC13\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;param name=&quot;phi&quot;&gt; Azimuthal angle -Pi\/2..+Pi\/2 where 0 represents equator. &lt;\/param&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-gistfile1-txt-LC14\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;returns&gt; A unit vector. &lt;\/returns&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-gistfile1-txt-LC15\" class=\"blob-code blob-code-inner js-file-line\">static public Vector3 FromSpherical(float theta, float phi) {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-gistfile1-txt-LC16\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 var th = FromPolarAngle(theta); var ph = FromPolarAngle(QUAD &#8211; phi);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-gistfile1-txt-LC17\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 return new Vector3(th.x * ph.y, ph.x, th.y * ph.y);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-gistfile1-txt-LC18\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-gistfile1-txt-LC19\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-gistfile1-txt-LC20\" class=\"blob-code blob-code-inner js-file-line\">static public Vector3 FromSpherical(Vector2 coords)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-gistfile1-txt-LC21\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 =&gt; FromSpherical(coords.x, coords.y);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-gistfile1-txt-LC22\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-gistfile1-txt-LC23\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;summary&gt; Conversion from cartesian to spherical coordinates.<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-gistfile1-txt-LC24\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ Returns &lt;see langword=&quot;true&quot;\/&gt; on success, &lt;see langword=&quot;false&quot;\/&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-gistfile1-txt-LC25\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ otherwise. (Values are defined in any case.) &lt;\/summary&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-gistfile1-txt-LC26\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;param name=&quot;spherical&quot;&gt; The resulting spherical unit coordinates. &lt;\/param&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-gistfile1-txt-LC27\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ &lt;param name=&quot;magnitude&quot;&gt; Optional magnitude of the input vector.<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-gistfile1-txt-LC28\" class=\"blob-code blob-code-inner js-file-line\">\/\/\/ Leave at 1 when input vector is unit to avoid normalization. &lt;\/param&gt;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-gistfile1-txt-LC29\" class=\"blob-code blob-code-inner js-file-line\">static public bool ToSpherical(Vector3 v, out Vector2 spherical, float magnitude = 1f) {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-gistfile1-txt-LC30\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 var theta = MathF.Atan2(v.z, v.x);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-gistfile1-txt-LC31\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 theta = theta &lt; 0f? theta + TAU : theta;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-gistfile1-txt-LC32\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 var im = (magnitude == 1f)? 1f : 1f \/ SubstZero(MathF.Max(0f, magnitude), float.NaN);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-gistfile1-txt-LC33\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 var phi = QUAD &#8211; MathF.Acos(v.y * im);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-gistfile1-txt-LC34\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 var success = true;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-gistfile1-txt-LC35\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 if(float.IsNaN(theta)) { theta = 0f; success = false; }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n<td id=\"file-gistfile1-txt-LC36\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 if(float.IsNaN(phi)) { phi = 0f; success = false; }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n<td id=\"file-gistfile1-txt-LC37\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 spherical = new Vector2(theta, phi);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n<td id=\"file-gistfile1-txt-LC38\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 return success;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n<td id=\"file-gistfile1-txt-LC39\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n<td id=\"file-gistfile1-txt-LC40\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L41\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"41\"><\/td>\n<td id=\"file-gistfile1-txt-LC41\" class=\"blob-code blob-code-inner js-file-line\">static public float SubstZero(float v, float subst, float epsilon = 1E-6f) =&gt; MathF.Abs(v) &lt; epsilon? subst : v;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L42\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"42\"><\/td>\n<td id=\"file-gistfile1-txt-LC42\" class=\"blob-code blob-code-inner js-file-line\">static public float Mod(float n, float m) =&gt; (m &lt;= 0f)? 0f : (n %= m) &lt; 0f? n + m : n;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L43\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"43\"><\/td>\n<td id=\"file-gistfile1-txt-LC43\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L44\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"44\"><\/td>\n<td id=\"file-gistfile1-txt-LC44\" class=\"blob-code blob-code-inner js-file-line\">\/\/ You can now easily transform some 3D coordinates to longitude \/ latitude (in degrees) if you do<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L45\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"45\"><\/td>\n<td id=\"file-gistfile1-txt-LC45\" class=\"blob-code blob-code-inner js-file-line\">    static public Vector2 ToLongLat(Vector3 coords, Vector3 center = default) {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L46\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"46\"><\/td>\n<td id=\"file-gistfile1-txt-LC46\" class=\"blob-code blob-code-inner js-file-line\">      coords -= center;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L47\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"47\"><\/td>\n<td id=\"file-gistfile1-txt-LC47\" class=\"blob-code blob-code-inner js-file-line\">      ToSpherical(coords, out var spherical, coords.magnitude);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L48\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"48\"><\/td>\n<td id=\"file-gistfile1-txt-LC48\" class=\"blob-code blob-code-inner js-file-line\">      if(spherical.x &lt; 0f) spherical.x += 2f * MathF.PI;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L49\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"49\"><\/td>\n<td id=\"file-gistfile1-txt-LC49\" class=\"blob-code blob-code-inner js-file-line\">      return spherical * (180f \/ MathF.PI);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L50\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"50\"><\/td>\n<td id=\"file-gistfile1-txt-LC50\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L51\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"51\"><\/td>\n<td id=\"file-gistfile1-txt-LC51\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L52\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"52\"><\/td>\n<td id=\"file-gistfile1-txt-LC52\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L53\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"53\"><\/td>\n<td id=\"file-gistfile1-txt-LC53\" class=\"blob-code blob-code-inner js-file-line\">\/\/ And back (from longitude \/ latitude in degrees, to some exact 3D point on the surface)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L54\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"54\"><\/td>\n<td id=\"file-gistfile1-txt-LC54\" class=\"blob-code blob-code-inner js-file-line\">\/\/ https:\/\/forum.unity.com\/threads\/latitude-and-longitude-coordinates-in-vector-3-unity.1446328\/#post-9066883<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L55\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"55\"><\/td>\n<td id=\"file-gistfile1-txt-LC55\" class=\"blob-code blob-code-inner js-file-line\">static public Vector3 FromLongLat(Vector2 longLat, Vector3 center = default, float radius = 1f)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-gistfile1-txt-L56\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"56\"><\/td>\n<td id=\"file-gistfile1-txt-LC56\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 =&gt; center + radius * FromSpherical(longLat * (MathF.PI \/ 180f));<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/8c632b39d0893a8d6c40\/raw\/252cd41f7cba9274898437383f8871c150ae5c88\/gistfile1.txt\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/8c632b39d0893a8d6c40#file-gistfile1-txt\" class=\"Link--inTextBlock\"><br \/>\n          gistfile1.txt<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-latlong-cs\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-c  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"LatLong.cs content, created by unitycoder on 10:59AM on March 01, 2016.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"LatLong.cs\">\n<tr>\n<td id=\"file-latlong-cs-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-latlong-cs-LC1\" class=\"blob-code blob-code-inner js-file-line\">\/\/ blog post: https:\/\/unitycoder.com\/blog\/2016\/03\/01\/latitude-longitude-position-on-3d-sphere-v2\/<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-latlong-cs-LC2\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-latlong-cs-LC3\" class=\"blob-code blob-code-inner js-file-line\">using UnityEngine;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-latlong-cs-LC4\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-latlong-cs-LC5\" class=\"blob-code blob-code-inner js-file-line\">public class LatLong : MonoBehaviour<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-latlong-cs-LC6\" class=\"blob-code blob-code-inner js-file-line\">{<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-latlong-cs-LC7\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-latlong-cs-LC8\" class=\"blob-code blob-code-inner js-file-line\">    public Transform marker; \/\/ marker object<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-latlong-cs-LC9\" class=\"blob-code blob-code-inner js-file-line\">    public float radius = 5; \/\/ globe ball radius (unity units)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-latlong-cs-LC10\" class=\"blob-code blob-code-inner js-file-line\">    public float latitude = 51.5072f; \/\/ lat<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-latlong-cs-LC11\" class=\"blob-code blob-code-inner js-file-line\">    public float longitude = 0.1275f; \/\/ long<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-latlong-cs-LC12\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-latlong-cs-LC13\" class=\"blob-code blob-code-inner js-file-line\">    \/\/ Use this for initialization<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-latlong-cs-LC14\" class=\"blob-code blob-code-inner js-file-line\">    void Start()<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-latlong-cs-LC15\" class=\"blob-code blob-code-inner js-file-line\">    {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-latlong-cs-LC16\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ calculation code taken from <\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-latlong-cs-LC17\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ @miquael http:\/\/www.actionscript.org\/forums\/showthread.php3?p=722957#post722957<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-latlong-cs-LC18\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ convert lat\/long to radians<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-latlong-cs-LC19\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-latlong-cs-LC20\" class=\"blob-code blob-code-inner js-file-line\">        latitude = Mathf.PI * latitude \/ 180;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-latlong-cs-LC21\" class=\"blob-code blob-code-inner js-file-line\">        longitude = Mathf.PI * longitude \/ 180;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-latlong-cs-LC22\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-latlong-cs-LC23\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ adjust position by radians\t<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-latlong-cs-LC24\" class=\"blob-code blob-code-inner js-file-line\">        latitude -= 1.570795765134f; \/\/ subtract 90 degrees (in radians)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-latlong-cs-LC25\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-latlong-cs-LC26\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ and switch z and y (since z is forward)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-latlong-cs-LC27\" class=\"blob-code blob-code-inner js-file-line\">        float xPos = (radius) * Mathf.Sin(latitude) * Mathf.Cos(longitude);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-latlong-cs-LC28\" class=\"blob-code blob-code-inner js-file-line\">        float zPos = (radius) * Mathf.Sin(latitude) * Mathf.Sin(longitude);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-latlong-cs-LC29\" class=\"blob-code blob-code-inner js-file-line\">        float yPos = (radius) * Mathf.Cos(latitude);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-latlong-cs-LC30\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-latlong-cs-LC31\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-latlong-cs-LC32\" class=\"blob-code blob-code-inner js-file-line\">        \/\/ move marker to position<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-latlong-cs-LC33\" class=\"blob-code blob-code-inner js-file-line\">        marker.position = new Vector3(xPos, yPos, zPos);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-latlong-cs-LC34\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-latlong-cs-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-latlong-cs-LC35\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/8c632b39d0893a8d6c40\/raw\/252cd41f7cba9274898437383f8871c150ae5c88\/LatLong.cs\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/8c632b39d0893a8d6c40#file-latlong-cs\" class=\"Link--inTextBlock\"><br \/>\n          LatLong.cs<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-uvto3d-cs\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-c  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"UVTo3D.cs content, created by unitycoder on 10:59AM on March 01, 2016.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"UVTo3D.cs\">\n<tr>\n<td id=\"file-uvto3d-cs-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-uvto3d-cs-LC1\" class=\"blob-code blob-code-inner js-file-line\">\/\/ https:\/\/forum.unity.com\/threads\/calculate-latitude-and-longitude-using-uv-coordinates-of-a-sphere.1579935\/#post-9775563<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-uvto3d-cs-LC2\" class=\"blob-code blob-code-inner js-file-line\">\/\/ Convert UV coordinate to World Coordinate<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-uvto3d-cs-LC3\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 public Vector3 UVTo3D(Vector2 uv, Mesh mesh, Transform transform)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-uvto3d-cs-LC4\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-uvto3d-cs-LC5\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 int[] tris = mesh.triangles;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-uvto3d-cs-LC6\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 Vector2[] uvs = mesh.uv;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-uvto3d-cs-LC7\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 Vector3[] verts = mesh.vertices;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-uvto3d-cs-LC8\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-uvto3d-cs-LC9\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 for (int i = 0; i &lt; tris.Length; i += 3)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-uvto3d-cs-LC10\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-uvto3d-cs-LC11\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Vector2 u1 = uvs[tris[i]]; \u00a0 \u00a0 \u00a0\/\/ get the triangle UVs*<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-uvto3d-cs-LC12\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Vector2 u2 = uvs[tris[i + 1]];<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-uvto3d-cs-LC13\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Vector2 u3 = uvs[tris[i + 2]];<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-uvto3d-cs-LC14\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-uvto3d-cs-LC15\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Calculate triangle area &#8211; if zero, skip it<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-uvto3d-cs-LC16\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 float a = Area(u1, u2, u3);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-uvto3d-cs-LC17\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (a == 0)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-uvto3d-cs-LC18\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-uvto3d-cs-LC19\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-uvto3d-cs-LC20\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Calculate barycentric coordinates of u1, u2 and u3<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-uvto3d-cs-LC21\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ If any is negative then point is outside the triangle, skip it<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-uvto3d-cs-LC22\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-uvto3d-cs-LC23\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 float a1 = Area(u2, u3, uv)\/a;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-uvto3d-cs-LC24\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (a1 &lt; 0)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-uvto3d-cs-LC25\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-uvto3d-cs-LC26\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-uvto3d-cs-LC27\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 float a2 = Area(u3, u1, uv)\/a;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-uvto3d-cs-LC28\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (a2 &lt; 0)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-uvto3d-cs-LC29\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-uvto3d-cs-LC30\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-uvto3d-cs-LC31\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 float a3 = Area(u1, u2, uv)\/a;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-uvto3d-cs-LC32\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (a3 &lt; 0)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-uvto3d-cs-LC33\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-uvto3d-cs-LC34\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-uvto3d-cs-LC35\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Point inside the triangle &#8211; find mesh position by interpolation\u2026<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n<td id=\"file-uvto3d-cs-LC36\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Vector3 p3D = a1 * verts[tris[i]] + a2 * verts[tris[i + 1]] + a3 * verts[tris[i + 2]];<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n<td id=\"file-uvto3d-cs-LC37\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n<td id=\"file-uvto3d-cs-LC38\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ return it in world coordinates:<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n<td id=\"file-uvto3d-cs-LC39\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return transform.TransformPoint(p3D);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n<td id=\"file-uvto3d-cs-LC40\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L41\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"41\"><\/td>\n<td id=\"file-uvto3d-cs-LC41\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 return Vector3.zero;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L42\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"42\"><\/td>\n<td id=\"file-uvto3d-cs-LC42\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 }<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L43\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"43\"><\/td>\n<td id=\"file-uvto3d-cs-LC43\" class=\"blob-code blob-code-inner js-file-line\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L44\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"44\"><\/td>\n<td id=\"file-uvto3d-cs-LC44\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \/\/\/ Calculate signed triangle area using a kind of \u201c2D cross product\u201d:<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L45\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"45\"><\/td>\n<td id=\"file-uvto3d-cs-LC45\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 private float Area(Vector2 p1, Vector2 p2, Vector2 p3)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L46\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"46\"><\/td>\n<td id=\"file-uvto3d-cs-LC46\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 {<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L47\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"47\"><\/td>\n<td id=\"file-uvto3d-cs-LC47\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 Vector2 v1 = p1 &#8211; p3;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L48\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"48\"><\/td>\n<td id=\"file-uvto3d-cs-LC48\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 Vector2 v2 = p2 &#8211; p3;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L49\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"49\"><\/td>\n<td id=\"file-uvto3d-cs-LC49\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 \u00a0 \u00a0 return (v1.x * v2.y &#8211; v1.y * v2.x) \/ 2;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-uvto3d-cs-L50\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"50\"><\/td>\n<td id=\"file-uvto3d-cs-LC50\" class=\"blob-code blob-code-inner js-file-line\">\u00a0 \u00a0 }<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/8c632b39d0893a8d6c40\/raw\/252cd41f7cba9274898437383f8871c150ae5c88\/UVTo3D.cs\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/8c632b39d0893a8d6c40#file-uvto3d-cs\" class=\"Link--inTextBlock\"><br \/>\n          UVTo3D.cs<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is just a c# conversion and few updated notes for the old post : http:\/\/unitycoder.com\/blog\/2011\/08\/09\/latitude-longitude-on-3d-sphere\/ Instructions &#8211; Attach the script below to your sphere (Unity sphere UV mapping is not suitable so I downloaded this sphere model and scaled transform to 5) &#8211; Add [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4201,"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":[804,420,3],"tags":[389,857,335,859,855,856,858,784,323],"class_list":["post-4200","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripts","category-tutorials","category-unity3d","tag-convert","tag-coordinate","tag-earth","tag-lat-long","tag-latitude","tag-longitude","tag-marker","tag-position","tag-sphere"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2016\/03\/latitude_longitude_unity_1.jpg?fit=678%2C407&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-15K","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4200","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=4200"}],"version-history":[{"count":3,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4200\/revisions"}],"predecessor-version":[{"id":4360,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4200\/revisions\/4360"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/4201"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=4200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=4200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=4200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}