<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>3DTreeMaster &amp;gt; 커뮤니티 &amp;gt; NOTICE</title>
<link>https://3dtreemaster.com/notice</link>
<language>ko</language>
<description>NOTICE (2025-06-04 11:34:18)</description>

<item>
<title>소개 페이지 업데이트 완료</title>
<link>https://3dtreemaster.com/notice/6</link>
<description><![CDATA[<p>프로젝트 별 소개 페이지 추가되었습니다.</p>
<p><br /></p>
<p>사용상에 건의사항이 있으시면 언제든 피드백 부탁드립니다.</p>
<p><br /></p>
<p>감사합니다.</p>]]></description>
<dc:creator>ADMIN</dc:creator>
<dc:date>2025-06-04T11:34:18+09:00</dc:date>
</item>


<item>
<title>둘레 길이 라벨 가시화 구현</title>
<link>https://3dtreemaster.com/notice/5</link>
<description><![CDATA[<p><div class="line-numbers"><pre><code class="language-js match-braces"><span style="white-space:normal;"><span style="white-space:pre;">			</span>{ // update circle stuff</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>const circleRadiusLabel2 = this.circleRadiusLabel2; //둘레 추가수정</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>const circleRadiusLabel = this.circleRadiusLabel;</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>const circleRadiusLine = this.circleRadiusLine;</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>const circleLine = this.circleLine;</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>const circleCenter = this.circleCenter;</span>


<span style="white-space:normal;"><span style="white-space:pre;">				</span>const circleOkay = this.points.length === 3;</span>


<span style="white-space:normal;"><span style="white-space:pre;">				</span>circleRadiusLabel2.visible = this.showCircle &amp;&amp; circleOkay; //둘레 추가수정</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>circleRadiusLabel.visible = this.showCircle &amp;&amp; circleOkay;</span>
<span style="white-space:normal;">				</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>circleRadiusLine.visible = this.showCircle &amp;&amp; circleOkay;</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>circleLine.visible = this.showCircle &amp;&amp; circleOkay;</span>
<span style="white-space:normal;"><span style="white-space:pre;">				</span>circleCenter.visible = this.showCircle &amp;&amp; circleOkay;</span>


<span style="white-space:normal;"><span style="white-space:pre;">				</span>if(this.showCircle &amp;&amp; circleOkay){</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>const A = this.points[0].position;</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const B = this.points[1].position;</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const C = this.points[2].position;</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const AB = B.clone().sub(A);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const AC = C.clone().sub(A);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const N = AC.clone().cross(AB).normalize();</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>const center = Potree.Utils.computeCircleCenter(A, B, C);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const radius = center.distanceTo(A);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>const circumference = 2 * Math.PI * radius; //둘레 추가 수정</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>const scale = radius / 20;</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleCenter.position.copy(center);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleCenter.scale.set(scale, scale, scale);</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>//circleRadiusLine.geometry.vertices[0].set(0, 0, 0);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>//circleRadiusLine.geometry.vertices[1].copy(B.clone().sub(center));</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLine.geometry.setPositions( [</span>
<span style="white-space:normal;"><span style="white-space:pre;">						</span>0, 0, 0,</span>
<span style="white-space:normal;"><span style="white-space:pre;">						</span>...B.clone().sub(center).toArray()</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>] );</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLine.geometry.verticesNeedUpdate = true;</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLine.geometry.computeBoundingSphere();</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLine.position.copy(center);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLine.computeLineDistances();</span>


<span style="white-space:normal;"><span style="white-space:pre;">					</span>const target = center.clone().add(N);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleLine.position.copy(center);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleLine.scale.set(radius, radius, radius);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleLine.lookAt(target);</span>
<span style="white-space:normal;">					</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLabel.visible = true;</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLabel.position.copy(center.clone().add(B).multiplyScalar(0.5));</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLabel.setText(`${radius.toFixed(3)} m`); //단위 추가 수정</span>
<span style="white-space:normal;">					</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>//둘레 추가수정</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLabel2.visible = true; </span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLabel2.position.copy(center);</span>
<span style="white-space:normal;"><span style="white-space:pre;">					</span>circleRadiusLabel2.setText(`${circumference.toFixed(3)} m`); //단위 추가 수정</span>


<span style="white-space:normal;"><span style="white-space:pre;">				</span>}</span>
<span style="white-space:normal;"><span style="white-space:pre;">			</span>}</span></code></pre></div>
</p>]]></description>
<dc:creator>ADMIN</dc:creator>
<dc:date>2024-05-24T20:00:24+09:00</dc:date>
</item>


<item>
<title>외부에서의 플랫폼 접근 및 사용 차단</title>
<link>https://3dtreemaster.com/notice/3</link>
<description><![CDATA[<p><div class="line-numbers"><pre><code class="language-php match-braces">&lt;?php
/*
include_once('./_common.php');
if ($is_guest) {
    echo "&lt;script&gt;
            alert('접근 권한이 없습니다.');
            window.location.href = '" . G5_URL . "';
          &lt;/script&gt;";
    exit;
}
*/
// PHP를 사용하여 iframe 내부에서 불러온 것인지 확인
if (isset($_SERVER['HTTP_REFERER'])) {
    $referrer = $_SERVER['HTTP_REFERER'];
    $host = parse_url($referrer, PHP_URL_HOST);
    
    // 허용된 도메인인지 확인
    if ($host !== '3dtreemaster.com') {
        // 허용된 도메인이 아니면 접근 차단
        header('Location: <a href="https://3dtreemaster.com" rel="nofollow">https://3dtreemaster.com</a>');
        exit;
    }
} else {
    // HTTP_REFERER가 설정되지 않은 경우 리다이렉트 (직접 접근)
    header('Location: <a href="https://3dtreemaster.com" rel="nofollow">https://3dtreemaster.com</a>');
    exit;
}
?&gt;</code></pre></div>
</p>]]></description>
<dc:creator>ADMIN</dc:creator>
<dc:date>2024-05-19T03:26:07+09:00</dc:date>
</item>


<item>
<title>모바일 환경 대응 엔진 업그레이드 완료</title>
<link>https://3dtreemaster.com/notice/1</link>
<description><![CDATA[<p>모바일 환경에서도 플랫폼을 사용하실 수 있게 </p><p><br /></p><p>2D Orthomosaic, 3D Model, 3D Point Cloud, 3D VR/AR </p><p><br /></p><p>각 엔진의 업그레이드가 완료되었습니다.<br /><br />사용상에 건의사항이 있으시면 언제든 피드백 부탁드립니다.</p><p><br /></p><p>감사합니다.</p><p><br /></p><p><br /></p>]]></description>
<dc:creator>ADMIN</dc:creator>
<dc:date>2024-05-17T03:50:06+09:00</dc:date>
</item>

</channel>
</rss>
