■default ---■fontsize --70% --80% --100% --120% --140% --- --■scroll_switch

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

javascript 3点から円の中心と半径を求める

//3点から円の中心と半径を求める array[[x,y],r] = point3_to_circle_pv( ar = [[x,y],[x,y],[x,y]]);
function point3_to_circle_pv(ar){
if( !span_2point ([ar[0],ar[1]]) || !span_2point ([ar[0],ar[2]]) || !span_2point ([ar[1],ar[2]])){return false ;}
var n = [ (ar[1][0] - ar[0][0]) ,(ar[1][1] - ar[0][1]),(ar[2][0] - ar[0][0] ),(ar[2][1] - ar[0][1]) ] ;
var x = ar[0][0] + (pow_and_plus_2num ([n[0],n[1]]) * n[3] - pow_and_plus_2num ([n[2],n[3]]) * n[1] ) / (n[0] * n[3] - n[1] * n[2]) / 2 ;
var y = (n[1]) ? (n[0] * ( (ar[0][0] + ar[1][0] ) - (x * 2 )) + ( ar[1][1] + ar[0][1] ) * n[1] ) / n[1] / 2 : (n[2] * ( ( ar[0][0] + ar[2][0] ) - (x * 2 )) + ( ar[2][1] + ar[0][1] ) * n[3] ) / n[3] / 2 ;
var r = average_of_ary ( [span_2point ([[x,y],ar[0]]) , span_2point ([[x,y],ar[1]]) ,span_2point ([[x,y],ar[2]]) ]) ;
return [[x,y],r] ;
}
//////////////////////////////////////////////////////////////////////////////
//2点間の距離[[x,y],[x,y]]
function span_2point (xy){return Math.sqrt( pow_and_plus_2point (xy) );}
function pow_and_plus_2point (xy){return pow_and_plus_2num ([(xy[0][0] - xy[1][0]) , (xy[0][1] - xy[1][1]) ]) ;}
function pow_and_plus_2num (ab){return Math.pow(ab[0],2) + Math.pow(ab[1],2) ;}
//数値配列の平均
function average_of_ary(ar) {var ans = 0;for (var i in ar ) {ans += ar[i];}return (ans / ar.length);}

//↓こんな感じでつかう
var ten3 = [[-1,1],[1,1],[1,-1]];
var answer = point3_to_circle_pv(ten3 );


こねくり回しているうちに自分でも何で動くかよく分からなくなったけど、答えはあっているっぽい。
スポンサーサイト

ハットトリックはターキーではない

最近晴れ男になったのでバイクの免許を取りました。
ところが、納車した途端に雨男になりました。
こういうのは何男って言うんでしょうか。電車男でしょうか。

バイクの免許を取る間にいろいろ調べたりして知識をつけましたが、バイク業界はかなり専門用語が多い印象です。
フラリッシュ業界は「フラリッシュ」と「パケッツ」と「スート」だけ覚えておけば後は特に有りません。
その他は固有名詞とか商品名とか部品名なので、知っているふりしたり知らないふりしたりしてればOKです。
高校の頃、友達が「タバコ業界ってなんか専門用語多いよな」とか言ってきたので「どんなの?」と聞き返したら「シケモク」しか出てこなかった時ぐらい少ないです。
バイク用語は多いです。

まず、モトブログといいます。
意味はよく分からないのですが、バイク関連のブログとか動画投稿とか総称してモトブログと呼ぶらしいです。
フラブログとかマジブログとか聞いたこと有りません。
初めは「モト」さんという人がやってるバイクのブログだと思っていて、随分と手広くやってるなぁ、と思った次第です。
月極駐車場をゲッキョクグループが運営してると勘違いするのと同じロジックです。

あと、ピーキーという言葉は是非日常生活で使っていきたいです。
前にも書きましたが、ビリヤード用語で「フロック」というのが有ります。
下手なショットにもかかわらず運よくいい感じになることです。
あとバスケット用語で「ブザービート」。
バスケットは終了のホイッスルでも、鳴る前に投げたボールは有効なので、それがゴールした場合得点になります。
それで逆転する場合ブザービートというらしいです。
サッカーでは3点同じ人が入れると「ハットトリック」といい、
ボーリングでは3回連続でストライクを取ることを「ターキー」といいます。
なんか知らないけど、大体の業界がそこでしか使わないような、用語というか慣用句というか比喩表現を持っています。
ちなみにゴルフはアルバトロスとかイーグルとかバーディーとかパーとかボギーとか鳥の名前で成績を表現しますが、ボーリングのターキーはそれとは違う理論です。
その昔、3回連続ストライクを取ったときにボーリング場から鶏肉をプレゼントしてもらえるサービスがあったらしいのですが、その名残だそうです。
みなが口々にストライクを取っては「ターキーィィ!!」と叫び狂い、いつの間にやらその言葉だけが定着したそうな。
もちろんアメリカです。
だから、焼き鳥じゃなくて、フライドチキンみたいなやつだと思います。

「ピーキー」は「ピーク時に最も性能を発揮するが取り扱いが難しい」という様な意味です。
「エッジが効いてる」とか「玄人向け」とか「曲者」とかそういうイメージです。
モンハンで言う所のランスのポジションです。多分。
反対語は「マイルド」です。
私は今までそういう場合は「ステアリングが軽い」と表現してきましたが、今の今まで意味が通じた事は一度も有りません。
昔「F1サーカス」というPCエンジンのレーシングゲームで、ステリングのチューンを最も軽くするとちょっとボタンを押しただけでものすんごい曲がるのですぐ壁にぶつかるのですが、その代わり慣れると髪が買ったコーナリングができたのです。
と言う所から来ているのですが、だれも知るわけ有りません。
こんどからピーキーと言います。


その二つです。タバコ業界より多いです。
もちろんこのブログはピーキーです。
あと、パケッツじゃなくてパーケッツでした。

イラストレーターのジャバスクリプトでDXFが出せない解決メモ

イラストレーターのjavascriptで、
DXFの書き出しをする場合こんな感じになると思います。

function output_dxf (ad,an){
var ad = ad ? ad : activeDocument;
var an = an ? an : activeDocument.name + ".dxf";
var et = ExportType.AUTOCAD;//FLASH PNG24 GIF PNG8 JPEG SVG Photoshop AutoCAD

var eo = new ExportOptionsAutoCAD();
eo.exportFileFormat = AutoCADExportFileFormat .DXF;//DWG DXF
eo.version = AutoCADCompatibility.AutoCADRelease13;//AutoCADRelease13 AutoCADRelease15 AutoCADRelease14 AutoCADRelease18
eo.unitScaleRatio = 1;//単位 多分、比率は自分で計算する
eo.unit = AutoCADUnit.Millimeters;//DXF単位 Points Millimeters Picas Centimeters Inches Pixels
eo.scaleLineweights = false ;//線幅を拡大縮小
eo.colors = AutoCADColors.Max256Colors;//Max8Colors Max256Colors Max16Colors TrueColors
eo.rasterFormat = AutoCADRasterFormat.PNG;//ラスタライズ形式
eo.exportOption = AutoCADExportOption.PreserveAppearance; //MaximizeEditability アビアランス保持と編集機能最大限
eo.exportSelectedArtOnly =false;//選択したアートだけ書き出し
eo.alterPathsForAppearance = false;//アビアランスのパスを変更
eo.convertTextToOutlines = true;//テキストのアウトライン化

ad.exportFile( an , et , eo);
//ad.close( SaveOptions.DONOTSAVECHANGES );
}

ドキュメントのexportFile、メソッドは、「FLASH PNG24 GIF PNG8 JPEG SVG Photoshop AutoCAD」の形式が出せます。
が、それぞれの形式で エクスポートoptionが違うにもかかわらず、exportFile一個でいけます。
ちなみに、関係ない形式のプロパティをoptionに入れても、無視されるだけでエラーになりません。
例えば、上の関数にPNGのエクスポートoptionである
eo.colorCount = 256;//パレットの色数
などの一行を足しても大丈夫です。
だから、プロパティの設定をやれるだけやっておいて
var eo = new ExportOptionsAutoCAD();
の部分を
var eo = new ExportOptionsPNG8();
とかに変えれば、PNG形式で保存されます。

それはいいのですが、このDXFを出す時に非常につまったのが
var et = ExportType.AUTOCAD;//←OK
この一行です。
マニュアルには ExportTypeは
FLASH PNG24 GIF PNG8 JPEG SVG Photoshop AutoCAD
の中から選べる用に書いて有りますが、
var et = ExportType.AutoCAD;//←エラー
だとNGです。
大文字じゃないといけません。
マニュアルには小文字で書いて有りますが、大文字が正解です。

setEntirePath で illegal argument

イラストレーターのジャバスクリプトの
PathItem のメソッドで
setEntirePath というのがある。
アンカーの配列を渡すと、そのポイントで線をなぞってくれる関数。
↓の様に使います。
----------------------
var アンカーのリスト配列 = [ [0,0],[0,1],[1,1],[1,0]];
var オブジェクト = レイヤー.pathItems.add();
オブジェクト.setEntirePath(アンカーのリスト配列);
//四角ができる。
----------------------
ところが。
使用していたら、illegal argument というエラーで止まる事が有ります。
調べたり試したりした所、どうやら1000ポイント以上描写しようとすると、止まるらしい。
ちなみにマニュアルには以下が書いてある。
--------------------------------
PathItem methods
Method :setEntirePath
Parameter type : (pathPoints) array of[x, y] coordinate pairs
Returns :Nothing
What it does :
Sets the path using an array
of points specified as [x, y]
coordinate pairs.
-----------------------
とくに1000ポイント以上はダメとか書いて無いのだけど、だめらしい。
しかも、setEntirePath だとハンドルを後で別設定しないといけないので、二度手間。
setEntirePathだからと言って特段早いわけではないので、以下の様にしたほうがよろしいようです。
-----------------------
function setEntirePath_ex (ov,ancs,lds,rds){
lds = lds ? lds : ancs ;
rds = rds ? rds : ancs ;
for(var i = 0 ; i < ancs.length ; i++ ) {
if( !ar_jg2(ancs[i])){continue}
if( !ar_jg2(lds[i]) ){ lds[i] = ancs[i];}
if( !ar_jg2(rds[i]) ){ rds[i] = ancs[i];}
var p = ov.pathPoints.add();
p.anchor = ancs[i];
p .leftDirection = lds[i];
p .rightDirection = rds[i];
}
}
function ar_jg2(ar){if( typeof ar != "undefined" && ar.length == 2 && ar[0] !="" && ar[1] !="" ){return true;}else{return false;}}

----------------------
var アンカーのリスト配列 = [ [0,0],[0,1],[1,1],[1,0],.......1000配列以上あっても大丈夫];
var オブジェクト = レイヤー.pathItems.add();
setEntirePath_ex(オブジェクト, アンカーのリスト配列,[必要だったらハンドル情報左,必要だったらハンドル情報右]);
----------------------
ブログ内検索ワード
マジック / フラリッシュ / デザイン / ~のコツ / プログラム関連 /
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。