[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
370: デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 01:25:48.09 ID:9mOu9R4R0(1/14) AAS
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}

これですが、MOVの配列の末尾に何かを加えようとしてるのはわかるのですが、何を加えようとしてるのでしょうか?
[ , ]の所の意味がわかりません
MOV.push(Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0])ではダメなのでしょうか?
372
(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 02:10:37.00 ID:9mOu9R4R0(2/14) AAS
>>371
371(1): デフォルトの名無しさん (ワッチョイ 59da-AjLY [118.18.252.105]) [sage] 2022/12/12(月) 01:50:55.99 ID:N0jzJwvL0(1) AAS
MOV = []
MOV.push([1, 2])
console.log(MOV) // [[1, 2]]

MOV = []
MOV.push(1, 2)
console.log(MOV) // [1, 2]
ありがとうございます

うーん
難しいな
[絶対値にしたもの、絶対値にしてないもの]を[ ]でひとまとめにする理由は何なんだろう?
console.logを挟んで値を確認しながら考えないとわかりませんね
373
(2): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 02:23:13.76 ID:9mOu9R4R0(3/14) AAS
もしかして配列が入れ子になってるんでしょうか?
その後にSx.translate(MOV[0][1], 0)っていうコードが出て来るのですが…
MOV[0][1]の所が意味がわからなかったんですけど、
[[◯,●],[◯,◯],…]の●を指定してるんでしょうか?
376: デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 11:24:58.04 ID:9mOu9R4R0(4/14) AAS
>>374
374(1): デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33]) [sage] 2022/12/12(月) 02:45:20.07 ID:BD7ZISK00(1/3) AAS
>>373
その認識で合ってる。
MOV は配列で、その各要素も配列(2要素の配列)。
なんでそんな構造にしてるのかは知らん。
ありがとうございます

>>375
375(1): デフォルトの名無しさん (JP 0Ha5-3TNT [126.249.157.89]) [sage] 2022/12/12(月) 07:38:12.53 ID:u3d467jnH(1/2) AAS
>>373が聞いてるのは
translateがJSのcontextの関数なら
translate(100,50)はコンテキスト自体が右に100、下に50移動する

右移動量を絶対値にして移動させるってことかにゃん
そうです
全コード載せてみます
geometricBoundsは四角形の2点の座標を得るメソッドで、変数に[左上のx座標、左上のy座標、右下のx座標、右下のy座標]の順に格納されます
377
(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 11:25:36.96 ID:9mOu9R4R0(5/14) AAS
SEL = activeDocument.selection
PAT = activeDocument.pathItems
STB = app.preferences.getBooleanPreference("includeStrokeInBounds")

MAINfn()

function MAINfn(){
if(SEL.length == 0) return
GUI = []
for(p=0; p<PAT.length; p++) PATfn(PAT[p])
if(GUI.length == 0) return
for(s=0; s<SEL.length; s++) SELfn(SEL[s])
}

function PATfn(Px){
if(!Px.guides) return
Bp = Px.geometricBounds
GUI.push(Bp[0])
GUI.push(Bp[2])
}
378
(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 11:26:49.23 ID:9mOu9R4R0(6/14) AAS
function SELfn(Sx){
Bs = BNDfn(Sx)
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}
MOV2 = SORTfn(MOV)
Sx.translate(MOV2[0][1], 0)
}

function SORTfn(f0){
f1 = []
for(i=0; i<f0.length; i++) f1.push(f0[i])
f1.sort(
function(a,b){
if(a[0] < b[0]) return -1
if(a[0] > b[0]) return 1
if(a[0]== b[0]) return 0
}
)
return f1
}

function BNDfn(Bx){
Bz = Bx.geometricBounds
if(STB) Bz = Bx.visibleBounds
if(Bx.clipped) Bz = Bx.pageItems[0].geometricBounds
return Bz
}
379
(2): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 11:28:43.67 ID:9mOu9R4R0(7/14) AAS
「一番近いガイドに図形を吸着させる」スクリプトです
app.preferences.getBooleanPreferenceは無視してもらっていいです
環境設定の予備的なものなので。
function BNDfn(Bx)以下も環境設定の予備的なものなので無視でいいです
[絶対値と絶対値でないもの]を入れ子にする意味が知りたいです
381
(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 13:06:21.02 ID:9mOu9R4R0(8/14) AAS
>>380
380(1): デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.225.250]) [sage] 2022/12/12(月) 12:27:02.66 ID:TCDiz++Hr(1/3) AAS
>>379
配列MOVをソートするSORTfnで[◯,●]の◯を利用してるのは読み取れる?
ソートで利用するために [ , ] の入れ子にしてるだけですか?
383: デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 13:25:11.50 ID:9mOu9R4R0(9/14) AAS
>>38
38(2): デフォルトの名無しさん (ワッチョイ d501-dbST [60.87.221.16]) [sage] 2022/08/21(日) 15:06:45.69 ID:D11cwWL50(2/2) AAS
>>32
「実装」というが、「仕様」上で両方とも存在しているなら、同時に「実装」されるのでは?

>>34
ES3には「オブジェクト」の定義はあるが、「関数」の定義はない
故に「歴史的にはオブジェクトが先に定義された」といえなくもないが、そんな回答を望んでいるようにも見えない
外部リンク[html]:www2u.biglobe.ne.jp

参考になるかわからないが、typeof演算子は「[[Call]] を持つObject型」の場合に "function" を返す
外部リンク:262.ecma-international.org
ありがとうございます
わかりました
[◯,●]の◯はソートをするために利用している
絶対値が一番小さい◯を先頭に並べ替えて(距離が一番近い)、それと対になってる●だけtranslateで移動している
ということですね
384: デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 13:25:56.97 ID:9mOu9R4R0(10/14) AAS
× >>38
>>382
382(1): デフォルトの名無しさん (オッペケ Sra5-Aro6 [126.208.225.250]) [sage] 2022/12/12(月) 13:16:44.67 ID:TCDiz++Hr(2/3) AAS
>>381
まず聞かれたことに対してYESかNOで答えようよ

386
(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 13:34:52.14 ID:9mOu9R4R0(11/14) AAS
ガイドが、動かしたいオブジェクトの右にあるか左にあるか確定して無いんですよ
だからMath.absで絶対値にして距離を測ってるのか…
そして配列の入れ子にしてソート
勉強になるな
ここだけ他のスクリプトでも使える
397: デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 20:05:16.68 ID:9mOu9R4R0(12/14) AAS
>>396
396(1): デフォルトの名無しさん (ワッチョイ f1f0-3TNT [58.98.96.219]) [sage] 2022/12/12(月) 17:19:55.56 ID:Xk6tQN/c0(3/3) AAS
連投すみません
>>379さん
PC等->CG->Illustrator総合
のほうがいいかもですね
CG板のIllustratorスレはわかりませんが、DTP板のIllustratorスレではscriptがわかる人が1人くらいしか居ません
たまたまその人が居なかったら、何日も放置になってしまうし…
ここの人たちの方がscriptのメソッドとかもほとんどわかるし
Illustratorの図形といっても、xy座標に図形が並んでるだけの、ほとんど移動する時の足し算と引き算だけです
398
(3): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 20:10:18.24 ID:9mOu9R4R0(13/14) AAS
[◯,●]の◯をソートのために利用してるなんて、独りで考えてたら絶対思い付かなかったと思います
402
(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 22:12:32.05 ID:9mOu9R4R0(14/14) AAS
>>400
400(1): デフォルトの名無しさん (ワッチョイ 13bd-SbnF [125.194.54.89]) [sage] 2022/12/12(月) 20:37:06.98 ID:9eo7KahL0(1) AAS
>>398
ソートの手法としては収穫があったようでなにより。
でも他にも指摘があるように、アルゴリズムとしては今一つだから全体としてはあまり参考にするほどじゃないと思う。
それは距離の一番小さい相手を探す方法として距離でソートしてその一番最初を採るという手順を使ってるよね。
でも、最初から距離が一番小さいものを探せばループ 1回で答えが出る。
こんなかんじ?

function SELfn(Sx) {
Bs = BNDfn(Sx);
dmin = 99999
dsel = 0
for(g = 0; g < GUI.length; g++) {
for (b = 0; b <= 2; b += 2) {
d = GUI[g] - Bs[b]
a = Math.abs(d)
if (a < dmin) {
dmin = a
dsel = d
}
}
if (dmin < 99999) Sx.translate(dsel, 0)
}
これだとソート関数いらないんですか?
かなりコンパクトになりますね
ダイアログを表示させて吸着方向を上下左右選べるスクリプトを作ろうと思ってるので、こちらで作ってみます
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.057s