<?php
class Z{
function Z($x = "", $y = "", $kartezyen = 0, $radyan = 0 ){
if( $radyan ){
$this->radyan = $radyan;
}
list( $this->x, $this->y ) = $this->ayir(func_get_args());
}
function ayarla($radyan = 0){
$this->radyan = $radyan;
return $this->radyan;
}
function x(){
return $this->x;
}
function y(){
return $this->y;
}
function mod(){
return hypot( $this->x, $this->y );
}
function arguman(){
if( $this->radyan ){
return rad2deg( atan( $this->y / $this->x ) );
}
else{
return atan( $this->y / $this->x );
}
}
function ekle(){
list( $x, $y ) = $this->ayir(func_get_args());
$this->x+= $x;
$this->y+= $y;
}
function alt(){
list( $x, $y ) = $this->ayir(func_get_args());
$this->x-= $x;
$this->y-= $y;
}
function cok(){
list( $x, $y ) = $this->ayir(func_get_args());
list( $mod, $arg ) = $this->polar( $x, $y );
list( $this->x, $this->y ) = $this->kartezyen( $this->mod()*$mod, $this->arguman()+$arg );
}
function bol(){
list( $x, $y ) = $this->ayir(func_get_args());
list( $mod, $arg ) = $this->polar( $x, $y );
list( $this->x, $this->y ) = $this->kartezyen( $this->mod()/$mod, $this->arguman()-$arg );
}
function ayir( $dizi ){
list ($x, $y, $kartezyen, $radyan ) = $dizi;
if( $x ){
if( $y ){
if( $kartezyen == 1 ){
if( stristr( $y, "d" ) || ( ($radyan == 1) && (!stristr( $y, "d" )) ) ){
$y = deg2rad( $y );
}
list( $x, $y ) = $this->kartezyen( $x, $y );
}
else{
$x = $x;
$y = $y;
}
}
else{
list( $x, $y ) = $this->ayir_no( $x );
}
}
return array( @$x, @$y );
}
function ayir_no($veri){
$veri = preg_replace("/\s*/","",$veri);
if( preg_match("/(?i)[^erd\-+ij.,0-9]+/", $veri) ){
return -1;
}
else{
if( stristr( $veri, "e" ) ){
preg_match("/(?i)([0-9]+)e-[ij]?([0-9rd]+)[ij]?/", $veri, $dizi);
if( sizeof( $dizi ) ){
if( veriiveri( $dizi[2], "d" ) ){
$dizi[2] = deg2rad( $dizi[2] );
}
list( $re, $y ) = $this->kartezyen( $dizi[1], $dizi[2] );
}
}else{
preg_match_all( "/(?i)([\-+]?[0-9.,ij]+)/", $veri, $dizi, PREG_SET_ORDER );
if( sizeof( $dizi ) ){
foreach( $dizi as $sayi ){
if( preg_match( "/(?i)[ij]/", $sayi[1] ) ){
$y += $sayi[1];
}else{
$re += $sayi[1];
}
}
}
}
return array($re, $y);
}
}
function kartezyen( $mod, $a ){
return array( ( $mod*cos($a) ), ( $mod*sin($a) ) );
}
function polar( $re, $y ){
return array( hypot( $re, $y ) , atan( ($y/$re) ) );
}
}
print_r(new Z($x = "5", $y = "6", $kartezyen = 0, $radyan = 0 ));
echo "<br>";
print_r(new Z($x = "5", $y = "6", $kartezyen = 0, $radyan = 1 ));
echo "<br>";
print_r(new Z($x = "5", $y = "6", $kartezyen = 1, $radyan = 0 ));
echo "<br>";
print_r(new Z($x = "5", $y = "6", $kartezyen = 1, $radyan = 1 ));
?>
Çıktısı
Z Object ( [y] => 6 [x] => 5 )
Z Object ( [radyan] => 1 [y] => 6 [x] => 5 )
Z Object ( [y] => -1.3970774909946 [x] => 4.8008514332518 )
Z Object ( [radyan] => 1 [y] => 0.52264231633827 [x] => 4.9726094768414 )