HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0410
  (投稿者削除)8未解決


 

リンク

2017/4/10(Mon) 16:50:22|NO.79061

この記事は投稿者により削除されました。
2017/4/11(Tue) 08:03:41



この記事に返信する


無名

リンク

2017/4/10(Mon) 19:42:57|NO.79062


//幾何学模様を表示するサンプル sdim buf,8 lpoke buf,0,$BD89F48A lpoke buf,4,$CD96778A lpoke buf,8,$6C97 mes buf



沢渡

リンク

2017/4/10(Mon) 20:57:07|NO.79064

「幾何学模様」とやらがよくわからないですが、「幾何学模様」でGoogle画像検索して最初に出てくるような、
白と黒の四角や円を組み合わせたような模様でしょうか?

裏画面に、黒地に白で図形を描き、それを表画面にxorコピーするというやり方でやってみます。
以下の例では「円を何重にも重ねた」模様を描いていますが、「ここからは描画例」と「ここまで描画例」の
間をいじれば、他の模様もいけると思います。
(VRAMを1バイトずつxorする方法でやっていますが、もっといい方法があるかもしれません)


#const wid 600 //画面の横幅 #const hei 600 //画面の縦幅 //ここから前準備 vram_size=( ((wid*3)+3)&0xfffffffc ) * hei //vramのサイズ screen 0,wid,hei,0 buffer 1,wid,hei,0 //裏画面 gsel 0 color 0,0,0 : boxf mref vram0,66 //メイン画面のvramにアクセスできるようにする gsel 1 mref vram1,66 //裏画面のvramにアクセスできるようにする gsel 0 //ここまで前準備 //ここからは描画例 #define circle2f(%1,%2,%3) circle (%1)-(%3),(%2)-(%3),(%1)+(%3),(%2)+(%3),1 //(%1,%2)を中心に半径%3の塗りつぶした円を描くマクロ cent_x=int(wid/2) : cent_y=int(hei/2) r=double(wid/2) c_num=30 randomize redraw 0 repeat c_num gsel 1 //裏画面に描画する color 0,0,0 : boxf //裏画面を真っ黒にクリア color 255,255,255 //color rnd(256),rnd(256),rnd(256) //これのコメントアウトを外すとカラフルに x=int(r*cos(deg2rad(360/c_num*cnt)))+cent_x y=int(r*sin(deg2rad(360/c_num*cnt)))+cent_y circle2f x,y,int(r) gosub *xor_copy //裏画面に描画したらこれを呼ぶ loop gsel 0 redraw 1 //ここまで描画例 stop *xor_copy //裏画面の内容をメイン画面にxorコピー repeat vram_size poke vram0,cnt,peek(vram0,cnt)^peek(vram1,cnt) loop return



沢渡

リンク

2017/4/10(Mon) 21:01:24|NO.79065

おっと、これだとc_numに半端な数値を取ったときに描画が変になる。

x=int(r*cos(deg2rad(360/c_num*cnt)))+cent_x y=int(r*sin(deg2rad(360/c_num*cnt)))+cent_y
の部分を

x=int(r*cos(deg2rad(360.0/c_num*cnt)))+cent_x y=int(r*sin(deg2rad(360.0/c_num*cnt)))+cent_y
に置き換えてください。



空気

リンク

2017/4/11(Tue) 05:34:23|NO.79076

>無名s>それじゃないです。
幾何学的模様には様々な種類がありますので。
Google画像検索等でヒットしたアドレスを掲載したほうがいいかと思われます。



沢渡

リンク

2017/4/11(Tue) 09:27:55|NO.79078

うわ、削除かよ( ;´Д`)
ここは「HSPで幾何学模様を描く方法を教えてください」というスレでした。



空気

リンク

2017/4/11(Tue) 09:35:10|NO.79079

ただ、単に幾何学模様と言っている所を見ると、
幾何学模様についてよくわかっていなかったんですかね?
それとも、様々な幾何学模様を書くスクリプトを沢山提示してもらって
ゲームとかの背景に使う的な。

まあ、投稿者削除されたスレなのでそんなことを論じる必要もありませんけれど。



沢渡

リンク

2017/4/17(Mon) 15:40:39|NO.79132

削除されたスレですが、gdi32のBitBltなる命令を使えばVRAM弄らなくてもxorコピーできると知ったので、
備忘録的に修正。

(参考)http://hsp.tv/play/pforum.php?mode=pastwch&num=13849

#const wid 600 //画面の横幅
#const hei 600 //画面の縦幅

#include "gdi32.as"
#const SRCINVERT $00660046

//ここから前準備

screen 0,wid,hei,0
buffer 1,wid,hei,0 //裏画面

gsel 0
color 0,0,0 : boxf
hdc0=hdc
gsel 1
hdc1=hdc
gsel 0

//ここまで前準備

//ここからは描画例

#define circle2f(%1,%2,%3) circle (%1)-(%3),(%2)-(%3),(%1)+(%3),(%2)+(%3),1
//(%1,%2)を中心に半径%3の塗りつぶした円を描くマクロ

cent_x=int(wid/2) : cent_y=int(hei/2)
r=double(wid/2)
c_num=33

randomize
redraw 0
repeat c_num
gsel 1 //裏画面に描画する
color 0,0,0 : boxf //裏画面を真っ黒にクリア
color 255,255,255
//color rnd(256),rnd(256),rnd(256) //これのコメントアウトを外すとカラフルに
x=int(r*cos(deg2rad(360.0/c_num*cnt)))+cent_x
y=int(r*sin(deg2rad(360.0/c_num*cnt)))+cent_y
circle2f x,y,int(r)
gosub *xor_copy //裏画面に描画したらこれを呼ぶ
loop
gsel 0
redraw 1

//ここまで描画例

stop

*xor_copy
//裏画面の内容をメイン画面にxorコピー
BitBlt hdc0,0,0,wid,hei,hdc1,0,0,SRCINVERT
return



沢渡

リンク

2017/4/20(Thu) 21:56:52|NO.79163

付け忘れには気付いてましたけど、まさか突っ込まれるとは。
全く同じコード投稿するのは気がひけますが。

#const wid 600 //画面の横幅 #const hei 600 //画面の縦幅 #include "gdi32.as" #const SRCINVERT $00660046 //ここから前準備 screen 0,wid,hei,0 buffer 1,wid,hei,0 //裏画面 gsel 0 color 0,0,0 : boxf hdc0=hdc gsel 1 hdc1=hdc gsel 0 //ここまで前準備 //ここからは描画例 #define circle2f(%1,%2,%3) circle (%1)-(%3),(%2)-(%3),(%1)+(%3),(%2)+(%3),1 //(%1,%2)を中心に半径%3の塗りつぶした円を描くマクロ cent_x=int(wid/2) : cent_y=int(hei/2) r=double(wid/2) c_num=33 randomize redraw 0 repeat c_num gsel 1 //裏画面に描画する color 0,0,0 : boxf //裏画面を真っ黒にクリア color 255,255,255 //color rnd(256),rnd(256),rnd(256) //これのコメントアウトを外すとカラフルに x=int(r*cos(deg2rad(360.0/c_num*cnt)))+cent_x y=int(r*sin(deg2rad(360.0/c_num*cnt)))+cent_y circle2f x,y,int(r) gosub *xor_copy //裏画面に描画したらこれを呼ぶ loop gsel 0 redraw 1 //ここまで描画例 stop *xor_copy //裏画面の内容をメイン画面にxorコピー BitBlt hdc0,0,0,wid,hei,hdc1,0,0,SRCINVERT return



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.79061への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2017(c) All rights reserved.