2013-06-02 3 views
0

필자는 인터넷에있는 프레임 워크 나 다른 그래프 도구를 사용하지 않고 성취하고자하는 것을 발견했습니다.이 도구는 PHP 만 사용하고 필요하면 SQL을 사용하여 삼각 함수를 그래프로 나타냅니다. GD 라이브러리에 대해 알고 있지만 기능 중 도움이되는 것은 없습니다. 작은 스크립트를 썼는데 실제로는 작동하지 않습니다. 내 목표는 다음을 수행하는 것입니다 :그래프 삼각 함수

  1. 매개 변수로 추가 할 기능 이름, 시작 값 및 종료 값을 허용합니다.
  2. 함수가 cos, tan 또는 sin인지 확인하십시오.
  3. 주어진 시작 값과 끝 값을 각도로 반복하고 라디안으로 변환합니다.
  4. 필요한 경우 모든 값을 배열에 "추가"하고 점이 주어진 함수를 그래프로 나타냅니다.

함수의 모든 값을 루핑 한 후 함수를 그래프로 나타 내기 위해 수행해야 할 작업은 무엇입니까? 값이 별도의 배열에 있어야합니까? 어떤 기능을 그래프 작업에 사용해야합니까?

<?php 

header("Content-type: image/png"); 

function graphFunction($function, $startDegree, $endDegree) 
{ 

$functionList = array('cos', 'sin', 'tan'); 

if (strtolower($function) == 'cos') 
{ 
    $cosValues = array(); 
    for ($c = $startDegree; $c < $endDegree; $c++) 
    { 

     array_push($cosValues, cos(deg2rad($c))); 

     $graph = imagecreatetruecolor(500,250); 
      $col_poly = imagecolorallocate($graph, 255, 255, 255); 
      imagepolygon($graph, [the cosine values] , 34, $col_poly); 
      imagepng($graph); 
      imagedestroy($graph); 

     } 

    } 

} 

echo graphFunction('cos', 0, 360); 

?> 

이는 샘플 기능이 있어야하는데, 그래서 데이터베이스에 많은 것을 저장하는 방법이 있기 때문에 필요가 무엇이든지, 쓸모 제어 구조를 비판하지 될 수 있습니다. 나는 약간의 피드백이 있기를 바랄 뿐이다. PHP로 가능할 것으로 기대된다.

답변

1

PHP로이를 수행 할 수 있습니다. 나는 if 문 안에서 다음과 같이 시도해 보았다.

$height = 250; 
$offset = $height/2; 
$graph = imagecreatetruecolor(500, $height); 
$col_poly = imagecolorallocate($graph, 255, 255, 255); 

for ($c = $startDegree; $c < $endDegree; $c++) 
{ 
     $this_x = $c; 
     $next_x = $this_x + 1; 
     $this_y = cos(deg2rad($this_x)) * $offset + $offset; 
     $next_y = cos(deg2rad($next_x)) * $offset + $offset; 

     imageline($graph, $this_x, $this_y, $next_x, $next_y, $col_poly); 
} 

imagepng($graph); 
imagedestroy($graph); 

그래서 그래프의 y 좌표가 내부에 맞춰 지도록 설정해야하기 때문에 그래프 높이를 정의했습니다. 그런 다음 for 루프 내에서 현재 x 값을 x 좌표로 가져오고, y 좌표를 계산 한 후 다음도 값에 대해 동일한 값을 계산 한 다음이 두 점 사이에 선을 그립니다.

약간의 단서가 있으므로 조금만 정리하면됩니다. 또한 그래프의 너비에 대해서도 생각해 볼 필요가 있습니다. 여기에 게시 한 내용은 500 픽셀 너비이므로 그래프를 더 넓게 만들거나 300도 ~ 600도를 플로팅하려는 경우 당신의 그래프 영역에 반쯤 시작합니다.

를 또한 내가 그래서 당신은 이미지 리소스 각 단계를 다시 이전의 모든 데이터를 손실하지 않는 변경하는 루프의 내부 이미지와 색상을 정의했다.

을 어쨌든, 그것은 단지 예제 함수였습니다. 그렇지만도 (x 좌표) (그래픽 영역에 맞게 조정)로도 값을 사용하여 선택한 함수,도 값 및 그래프 영역 크기에 따라 y 좌표를 계산 한 다음 점 사이에 선을 그립니다.