アルゴリズムをプログラムする方法を学ぶ。
積を計算することは、現代では0と位取り表記によって大変容易になったが、古代エジプトなどでは専門性を求められるものであった。
積は和を複数回繰り返すことによって実現できる。コンピュータではビット演算を組み合わせることによってより効率的に積を計算することができる。
以下は、アーメスのアルゴリズムとその改善版を記述したコードである。
コードが最適化されているか常に思考し、よりよいコードに変換する作業を繰り返すことが大切だとわかる。
2015年6月28日日曜日
2013年4月22日月曜日
数式処理システム
おもしろく素晴らしい処理システム。
実用にいたるには、利用出来るところまでデータを取得、整理する必要がある。
認識技術を駆使して到達出来ないか。
・SAGE
http://www.sagemath.org/
・MATHMATICAのWEB版
http://www.wolframalpha.com/
実用にいたるには、利用出来るところまでデータを取得、整理する必要がある。
認識技術を駆使して到達出来ないか。
・SAGE
http://www.sagemath.org/
・MATHMATICAのWEB版
http://www.wolframalpha.com/
2013年1月19日土曜日
アフィン変換行列を求めるのに必要な連立方程式をphpで解く
結構めんどくさいんですが、一度書いてやれば使いまわせます。
$pointには0~2までx1→x2、y1→y2という座標点の対応を入れる前提です。
$pointには0~2までx1→x2、y1→y2という座標点の対応を入れる前提です。
2013年1月12日土曜日
【PHP】複数座標点の外接矩形から中心点を求める
与えられた複数座標に外接する矩形の中心点を求める。
選択した点の大体の中心を求める時に使う。
public static function getCenterCoordinate($coordinates){
// 初期化
$max_x_value = $coordinates[0]['x'];
$min_x_value = $coordinates[0]['x'];
$max_y_value = $coordinates[0]['y'];
$min_y_value = $coordinates[0]['y'];
// 座標点を含む矩形の中点を作成して返す
foreach($coordinates as $coordinate){
if($coordinate['x'] < $min_x_value){
$min_x_value = $coordinate['x'];
}
if($coordinate['y'] < $min_y_value){
$min_y_value = $coordinate['y'];
}
if($coordinate['x'] > $max_x_value){
$max_x_value = $coordinate['x'];
}
if($coordinate['y'] > $max_y_value){
$max_y_value = $coordinate['y'];
}
}
$center_value = array();
$center_value['x'] = ($max_x_value + $min_x_value) / 2;
$center_value['y'] = ($max_y_value + $min_y_value) / 2;
return $center_value;
}
もっとちゃんと中心をもとめたい場合は回転を考慮する。
選択した点の大体の中心を求める時に使う。
public static function getCenterCoordinate($coordinates){
// 初期化
$max_x_value = $coordinates[0]['x'];
$min_x_value = $coordinates[0]['x'];
$max_y_value = $coordinates[0]['y'];
$min_y_value = $coordinates[0]['y'];
// 座標点を含む矩形の中点を作成して返す
foreach($coordinates as $coordinate){
if($coordinate['x'] < $min_x_value){
$min_x_value = $coordinate['x'];
}
if($coordinate['y'] < $min_y_value){
$min_y_value = $coordinate['y'];
}
if($coordinate['x'] > $max_x_value){
$max_x_value = $coordinate['x'];
}
if($coordinate['y'] > $max_y_value){
$max_y_value = $coordinate['y'];
}
}
$center_value = array();
$center_value['x'] = ($max_x_value + $min_x_value) / 2;
$center_value['y'] = ($max_y_value + $min_y_value) / 2;
return $center_value;
}
もっとちゃんと中心をもとめたい場合は回転を考慮する。
登録:
投稿 (Atom)