Android Studio NDK-OpenGL ES 點陣字體

Android Studio NDK-OpenGL ES 點陣字體
Android Studio NDK-OpenGL ES 點陣字體

係游戲渲染文本,『點陣字體』係遠古技術, 係位圖繪畫ASCII字符, 哎『位圖字符glyph』,標准ASCII字符128,有96拉丁字母可渲染,從32到126.『32』係『吉格』.

位圖每行16字符. 位圖寬高符合2n.位圖『256256』每字符『1616』像素, 位圖『512512』每字符『3232』像素.

定義位圖字符

typedef struct FONT_TYP{
TEXTURE_PTR texture; 字庫紋理
DWORD   flag; 頂點標記
TEXTURE_REGION region[96]; 紋理區域
}FONT, * FONT_PTR;
  1. 拉丁字母
    for(int index = 0; index < 96; ++index){
  1. 生成ASCII字符UV 紋理坐標,『width, height』字符寬高,
Init_Region_Texture(&font->region[index],font->texture,x,y, width, height);
  1. 移動X坐標
x = x + width;
  1. 換行
if(x >= offsetX + width * row){

x = offsetX;

y = y + height;}

 

渲染位圖字庫

  1. 2D頂點座標數組
VECTOR2D  vertex_array[6 * 1024]   ;
  1. UV紋理座標數組
VECTOR2D  texCoord_array[6 * 1024] ;
  1. 啟用2D紋理映射
glEnable(GL_TEXTURE_2D);
  1. 禁用法線
glDisable(GL_NORMALIZE);
  1. 啓用透明測試
glEnable(GL_ALPHA_TEST);
  1. 指定透明色
    glAlphaFunc(GL_GREATER, 0);
  1. 綁定紋理
TEXTURE_PTR texture = font->texture;

glBindTexture(GL_TEXTURE_2D, texture->ID);

  1. 啟用頂點座標數組
glEnableClientState(GL_VERTEX_ARRAY);
  1. 啟用紋理座標數組
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

因為OpenGL『2D相機』原點『0,0』係『左下角』, 返䡛Y軸.

y = Font_frustum_height – y – height;
  1. 逐字渲染『ASCII碼』
for(int index = 0; index < length; ++index ){
  1. 『ASCII碼』轉『紋理索引』, 首ASCII碼係『吉格』,
int c = text[index] – ‘ ‘;
  1. 可渲染拉丁字母96, 『紋理索引』小於0大於96皆唔渲染.
if(c < 0 || c > 96)  continue;
  1. 得到紋理坐標
TEXTURE_REGION_PTR      region = &font->region[c];
  1. 計算2D頂點坐標, 雙『三角形』.
Init_VECTOR2D(&vertex_array[0 * 3 + 0], x, y + height);

Init_VECTOR2D(&vertex_array[0 * 3 + 1], x + width, y + height);

Init_VECTOR2D(&vertex_array[0 * 3 + 2], x + width, y);

Init_VECTOR2D(&vertex_array[1 * 3 + 0], x, y + height);

Init_VECTOR2D(&vertex_array[1 * 3 + 1], x + width, y);

Init_VECTOR2D(&vertex_array[1 * 3 + 2], x, y);

  1. 計算UV紋理坐標, 雙『三角形』.
Init_VECTOR2D(&texCoord_array[0 * 3 + 0], region->u1, region->v2);

Init_VECTOR2D(&texCoord_array[0 * 3 + 1], region->u2, region->v2);

Init_VECTOR2D(&texCoord_array[0 * 3 + 2], region->u2, region->v1);

Init_VECTOR2D(&texCoord_array[1 * 3 + 0], region->u1, region->v2);

Init_VECTOR2D(&texCoord_array[1 * 3 + 1], region->u2, region->v1);

Init_VECTOR2D(&texCoord_array[1 * 3 + 2], region->u1, region->v1);

  1. 指定頂點數組
glVertexPointer(2, GL_FLOAT, 0, vertex_array);
  1. 指定紋理座標
glTexCoordPointer(2, GL_FLOAT, 0, texCoord_array);
  1. 繪畫頂點數組,雙『三角形』.
glDrawArrays(GL_TRIANGLES, 0, 2 * 3 );
  1. 移動下壹渲染位, 分『橫排』同『縱排』
if(VH == FONT_HORIZONTAL)

x = x + width;

else

if(VH == FONT_VERTICAL)

y = y + height;}

  1. 禁用透明測試
glDisable(GL_ALPHA_TEST);
  1. 當前矩陣堆棧出棧
glPopMatrix();

 

ASCII數字 字符
0–31 控制字元,用于控制印表機等周邊設備
32-126 鍵盤字符
127 DELETE 命令
48-57 0-9
65-90 A-Z
97-122 a-z
128-255 擴展ASCII,增加特殊符號字符, 歐語字母和圖形符號

 

Photoshop位圖字符glyph
Pixel 32*32
Font Terminal Regular
Size 4pt
mid
Aa

 

十進制(DEC) 十六進制(HEX) ASCII字符 簡介
0 0x00 空格NUL(null)
1 0x01 標題開始 SOH(start of headling)
2 0x02 正文開始 STX (start of text)
3 0x03 正文結束 ETX (end of text)
4 0x04 傳輸結束 EOT (end of transmission)
5 0x05 請求 ENQ (enquiry)
6 0x06 收到通知 ACK (acknowledge)
7 0x07 響鈴 BEL (bell)
8 0x08 退格 BS (backspace)
9 0x09 水準跳位字元 HT (horizontal tab)
10 0x0A 換行鍵 LF (NL line feed, new line)
11 0x0B 垂直跳位字元 VT (vertical tab)
12 0x0C 換頁鍵 FF (NP form feed, new page)
13 0x0D 回車鍵 CR (carriage return)
14 0x0E 不用切換 SO (shift out)
15 0x0F 啟用切換 SI (shift in)
16 0x10 資料連結轉義DLE (data link escape)
17 0x11 設備控制1 DC1 (device control 1)
18 0x12 設備控制2 DC2 (device control 2)
19 0x13 設備控制3 DC3 (device control 3)
20 0x14 設備控制4 DC4 (device control 4)
21 0x15 拒絕接收 NAK (negative acknowledge)
22 0x16 同步空閒 SYN (synchronous idle)
23 0x17 傳輸塊結束 ETB (end of trans. block)
24 0x18 取消 CAN (cancel)
25 0x19 EM (end of medium)
26 0x1A 替補 SUB (substitute)
27 0x1B 溢出 ESC (escape)
28 0x1C 檔分割符 FS (file separator)
29 0x1D 分組符 GS (group separator)
30 0x1E 記錄分離符 RS (record separator)
31 0x1F 單元分隔符號 US (unit separator)
32 0x20 空格 (space)
33 0x21 ! 嘆號
34 0x22 雙引號
35 0x23 # 井號
36 0x24 $ 美元符
37 0x25 % 百分號
38 0x26 & 和號
39 0x27 閉單引號
40 0x28 ( 開括弧
41 0x29 ) 閉括弧
42 0x2A * 星號
43 0x2B + 加號
44 0x2C , 逗號
45 0x2D 減號/破折號
46 0x2E . 句號
47 0x2F / 斜杠
48 0x30 0
49 0x31 1
50 0x32 2
51 0x33 3
52 0x34 4
53 0x35 5
54 0x36 6
55 0x37 7
56 0x38 8
57 0x39 9
58 0x3A : 冒號
59 0x3B ; 分號
60 0x3C < 小於
61 0x3D = 等號
62 0x3E > 大於
63 0x3F ? 問號
64 0x40 @ 電子郵件符號
65 0x41 A
66 0x42 B
67 0x43 C
68 0x44 D
69 0x45 E
70 0x46 F
71 0x47 G
72 0x48 H
73 0x49 I
74 0x4A J
75 0x4B K
76 0x4C L
77 0x4D M
78 0x4E N
79 0x4F O
80 0x50 P
81 0x51 Q
82 0x52 R
83 0x53 S
84 0x54 T
85 0x55 U
86 0x56 V
87 0x57 W
88 0x58 X
89 0x59 Y
90 0x5A Z
91 0x5B [ 開方括號
92 0x5C \ 反斜杠
93 0x5D ] 閉方括號
94 0x5E ^ 脫字元
95 0x5F _ 下劃線
96 0x60 ` 開單引號
97 0x61 a
98 0x62 b
99 0x63 c
100 0x64 d
101 0x65 e
102 0x66 f
103 0x67 g
104 0x68 h
105 0x69 i
106 0x6A j
107 0x6B k
108 0x6C l
109 0x6D m
110 0x6E n
111 0x6F o
112 0x70 p
113 0x71 q
114 0x72 r
115 0x73 s
116 0x74 t
117 0x75 u
118 0x76 v
119 0x77 w
120 0x78 x
121 0x79 y
122 0x7A z
123 0x7B { 開花括弧
124 0x7C | 垂線
125 0x7D } 閉花括弧
126 0x7E ~ 波浪號
127 0x7F 刪除DEL(DELETE)
128 0x80 Ç Ccedil
129 0x81 ü uuml
130 0x82 é eacute
131 0x83 â circ
132 0x84 ä auml
133 0x85 à agrave
134 0x86 å aring
135 0x87 ç ccedil
136 0x88 ê ecirc
137 0x89 ë euml
138 0x8A è egrave
139 0x8B ï iuml
140 0x8C î icirc
141 0x8D ì igrave
142 0x8E Ä Auml
143 0x8F Å ring
144 0x90 É Eacute
145 0x91 æ aelig
146 0x92 Æ AElig
147 0x93 ô ocirc
148 0x94 ö ouml
149 0x95 ò ograve
150 0x96 û ucirc
151 0x97 ù ugrave
152 0x98 ÿ yuml
153 0x99 Ö Ouml
154 0x9A Ü Uuml
155 0x9B ¢ 美分(cent)
156 0x9C £ 英磅(pound)
157 0x9D ¥ 日元(yen)
158 0x9E
159 0x9F ƒ
160 0xA0 á aacute
161 0xA1 í iacute
162 0xA2 ó oacute
163 0xA3 ú uacute
164 0xA4 ñ ntilde
165 0xA5 Ñ Ntilde
166 0xA6 ª
167 0xA7 º
168 0xA8 ¿
169 0xA9
170 0xAA ¬
171 0xAB ½
172 0xAC ¼
173 0xAD ¡
174 0xAE «
175 0xAF »
176 0xB0
177 0xB1
178 0xB2
179 0xB3
180 0xB4
181 0xB5
182 0xB6
183 0xB7
184 0xB8
185 0xB9
186 0xBA
187 0xBB
188 0xBC
189 0xBD
190 0xBE
191 0xBF
192 0xC0
193 0xC1
194 0xC2
195 0xC3
196 0xC4
197 0xC5
198 0xC6
199 0xC7
200 0xC8
201 0xC9
202 0xCA
203 0xCB
204 0xCC
205 0xCD
206 0xCE
207 0xCF
208 0xD0
209 0xD1
210 0xD2
211 0xD3
212 0xD4 Ô
213 0xD5
214 0xD6
215 0xD7
216 0xD8
217 0xD9
218 0xDA
219 0xDB
220 0xDC
221 0xDD
222 0xDE
223 0xDF
224 0xE0 α 阿爾法(Alpha)
225 0xE1 ß 貝塔(beta)
226 0xE2 Γ Gamma
227 0xE3 π 圓周率(pi)
228 0xE4 Σ sigma
229 0xE5 σ sigma
230 0xE6 µ mu
231 0xE7 τ tau
232 0xE8 Φ PHi
233 0xE9 Θ Theta
234 0xEA Ω 歐米伽(Omega)
235 0xEB δ Delta
236 0xEC 無窮
237 0xED φ phi
238 0xEE ε epsilon
239 0xEF
240 0xF0
241 0xF1 ±
242 0xF2
243 0xF3
244 0xF4
245 0xF5
246 0xF6 ÷
247 0xF7
248 0xF8
249 0xF9
250 0xFA ·
251 0xFB
252 0xFC
253 0xFD ²
254 0xFE
255 0xFF ÿ

 

Android Studio NDK-OpenGL ES 透明glAlphaFunc()

Android Studio NDK-OpenGL ES 透明glAlphaFunc()
Android Studio NDK-OpenGL ES 透明glAlphaFunc()

係2D游戲位圖愛蒞做動畫, 要過濾『背景色』, 係Android OpenGL ES用alpha屏蔽『背景色』, 壹法位圖『A分量』Alpha = 0, 貳法黑色定為『背景色』係載入時將『A分量』Alpha = 0. 所以兩法要係『GL_RGBA』模式運運作.

RGBA8888位圖,RGB占24bit, Alpha 值A占8bit, 透明度範圍『0~255』. 『0』通透.『 255』實體.

設Alpha值 通透 實體
glAlphaFunc() 0.0 1.0
glAlphaFuncx() 0 255

若位圖冇Alpha 值, OpenGL ES 係載入時將Alpha值設1.

BGRA8888/ARGB8888 Alpha = 0
RGB656,RGB888,index R=0,G=0,B=0, 黑色
  1.  載入纹理圖形卡『RAM』, 設GL_RGBA模式
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width , height , 0, GL_RGBA, GL_UNSIGNED_BYTE,  image);
  1. 啓用透明測試
glEnable(GL_ALPHA_TEST);
  1. 設Alpha值過濾透明色
glAlphaFunc(GL_GREATER, 0);
glAlphaFuncx(GL_GREATER, 0);

 

Android Studio NDK-OpenGL ES-2D相機

Android Studio NDK-OpenGL ES-2D相機
Android Studio NDK-OpenGL ES-2D相機

OpenGL有『平行投影』同『透視投影』, 2D相機係『平行投影』生成方盒『視體』, 愛蒞剪裁物體, 唔係『視體』內唔『渲染』. 愛蒞『等比例游戲』『平面游戲』

OpenGL『2D相機』原點『0,0』係『左下角』, z軸遠端係負,近端正.

Android『熒屏』原點『0,0』係『左上角』,

  1. 首先指定『矩陣堆棧』為『投影矩陣堆棧』
glMatrixMode(GL_PROJECTION);
  1. 清除殘留矩陣并載入『單位矩陣』,.
glLoadIdentity();
  1. 重置視區尺寸,『視區』變換係『投影』變換之後,『x,y』左下角『0,0』. 『width,height』同視窗尺寸相應『熒屏像素』, 除非想係視窗一部分區域繪畫, 可設較定較細『視區』.
glViewport(x, y, window_width, window_height);
  1. 『平行投影』定方盒『視體』愛蒞剪裁物體, 而唔係3D相機錐形.『left, bottom』指左下角『0, 0』,『right, top』指右上角『width, height』. 熒屏尺寸設『800,600』或『640,480』. 游戲世界尺寸設『80,60』或『64,48』. OpenGL會自動放大與視區相配.『near, far』z軸剪裁面『1, -1』
glOrthof (left,right,bottom,top,near,far);
glOrthof (0, frustum_width, 0, frustum_height, 1, -1);
  1. 指定『視體』中心『x, y』.移動2D相機
glOrthof (x- width/2,  x+width/x, y-height/2, y+height/2, 1, -1);

 

glOrthof()  
『left, bottom』 左下角『0, 0』
『right, top』 右上角『width, height』
near z軸近端剪裁面
far z軸遠端剪裁面
  1. 恢復『矩陣堆棧』為『視圖矩陣堆棧』
glMatrixMode(GL_MODELVIEW);
  1. 載入『單位矩陣』,清除殘留矩陣
glLoadIdentity();

示例

void  Projection_Camera2D(CAMERA2D_PTR cam){

// 重置視區尺寸

::glViewport(0,0,cam->real_width,cam->real_height);

// 設爲投影矩陣

::glMatrixMode(GL_PROJECTION);

// 載入單位矩陣

::glLoadIdentity();

// 正交投影

glOrthof (0, cam->frustum_width, 0, cam->frustum_height, 1, -1);

// 設定模型視圖矩陣

::glMatrixMode(GL_MODELVIEW);

// 載入單位矩陣

::glLoadIdentity();

}

 

Android Studio NDK-獲取JavaVM

Android Studio NDK-獲取JavaVM
Android Studio NDK-獲取JavaVM

『JavaVM』指『Java虛擬機』, 壹進程『Process』壹『JavaVM』, 冚辦爛線程『Thread』共用壹『JavaVM』.

係原生代碼獲得『Java虛擬機』, 通過『JNI_OnLoad ()』函式, 載入共享庫『System.loadLibrary(“lib”);』,載入『LIB.SO』 會自動調用『JNI_OnLoad ()』. 將javaVm以全域變量儲存.

緩存JavaVM接口指針

JavaVM javaVm;
jint JNI_OnLoad (JavaVM* vm, void* reserved){

javaVm = vm;

return JNI_VERSION_1_4;

}

加入『jni.h』頭文檔聲明『Java原生接口』

#include <jni.h>

『JNI』指『Java Native Interface』『Java原生接口』,實現『JavaVM』同『Native』通信.『Java代碼』同『原生代碼』調用.

『JNIEnv』指向當前『線程局部數據』, 『線程局部數據』內含『原生函式指針列表』. 壹線程『thread』壹『JNIEnv』. 唔得跨線程『thread』傳遞彼此獨立,

事因『POSIX線程』唔屬于『JAVA』平臺, 導致『JAVA虛擬機』冇發識別『POSIX線程』,  為咗訪問『JAVA虛擬機』,『POSIX線程』線程先附係『JAVA虛擬機』再行.

  1. 將線程附著係JAVA虛擬機,獲得屬於本線程JNIEnv接口. 返回『零』成功,非『零』為錯誤碼
    if(javaVm->AttachCurrentThread(&env,NULL) == 0)
  1. 係JAVA虛擬機分離綫程.返回『零』成功,非『零』為錯誤碼
    if(javaVm->DetachCurrentThread() == 0)

 

Android Studio NDK-POSIX線程

Android Studio NDK-POSIX線程
Android Studio NDK-POSIX線程

Android_Studio_NDK_POSIX_Thread

Android Studio NDK-POSIX線程

『Android Studio NDK』生成『C/C++』線程,使用 POSIX線程簡稱『Pthreads』. 儒略歷1995年發布POSIX.1c『標准』『擴展』綫程.為線程定義『創建』『處理』API.『Micrsoft Windows』『Mac OS X』『Linux』冚辬蘭支持POSIX線程.

事因『POSIX線程』唔屬于『JAVA』平臺, 導致『JAVA虛擬機』冇發識別『POSIX線程』,  為咗訪問『JAVA虛擬機』,『POSIX線程』線程先附係『JAVA虛擬機』再行.

  1. 係『NDK』原生代碼用POSIX線程, 加入『h』頭文檔聲明『POSIX Thread APIs』, 係『Android』實現係『Bionic API』庫
#include <pthread.h> // POSIX線程
#include <jni.h>
  1. 用pthread_create()創建線程
int pthread_create(pthread_t * thread,

pthread_attr_t const * attr,

void *(* start_routine)(void *),

void * arg);

  1. 參數
參數 簡介
thread 返回新建綫程句柄
attr 指定線程屬性,傅NULL使用默認值.
start_routine 指向綫程函式地址,
args 線程函式參數
  1. 返回值
0 線程啟動
Error code 錯誤碼
  1. 線程句柄
pthread_t      threadID;
  1. 線程函式參數,要全域變量,若傳多參數要『struct』蒞封裝.
typedef struct OPENGL_TYP{

JNIEnv *env;//   JNI

AAssetManager * aassetManager;// 資源管理

EGLDisplay display ;

EGLSurface surface;// 內核渲染表層

int Width, Height;// 熒屏寬高

}OPENGL,*OPENGL_PTR;

  1. 綫程函式樣板
void * start_rountine (void * args)
  1. 游戲運行綫程實例
void * run_game(void * param){

while (run == true)    {

Update_World();// 更新

Draw_World();// 繪畫

}

}

  1. 緩存JavaVM接口指針
jint JNI_OnLoad (JavaVM* vm, void* reserved){

javaVm = vm;

return JNI_VERSION_1_4;

}

  1. 將線程附著係JAVA虛擬機,獲得屬於本線程JNIEnv接口. 返回『零』成功,非『零』為錯誤碼
    if(javaVm->AttachCurrentThread(&env,NULL) == 0)
  1. 係JAVA虛擬機分離綫程.返回『零』成功,非『零』為錯誤碼
    if(javaVm->DetachCurrentThread() == 0)
  1. 啟動線程
 if( pthread_create(&threadID,  NULL, run_game, openGL) == 0)

return true;

else

return false;

  1. 游戲運行綫程
void * run_game(void * param){

// 將線程附著係JAVA虛擬機,

if(javaVm->AttachCurrentThread(&env,NULL) != 0)

return NULL;

Init_Engine( ); // 初此引擎

Init_World( );  // 初此游戲世界

while (run == true)    {

Update_World();// 更新

Draw_World();// 繪畫

}

Shutdown_World();// 閂游戲世界

Shutdown_Engine();  // 閂引擎

// 係JAVA虛擬機分離綫程

javaVm->DetachCurrentThread();

return NULL;

}

之前係『JAVA Thread』行『ANativeWindow_fromSurface()』冇事,係『C/C++ Thread』行『ANativeWindow_fromSurface()』死機. 暈得壹陣陣.

Android Studio NDK-OpenGL ES封裝SurfaceView

Android Studio NDK-OpenGL ES封裝SurfaceView
Android Studio NDK-OpenGL ES封裝SurfaceView

係『Android OpenGL ES』用『SurfaceView』蒞畀『OpenGL ES』渲染. 之前『SurfaceView』代碼擺係『MainActivity.java』.更佳方法係『SurfaceView』『Runnable』『SurfaceHolder.Callback』封裝成單獨『GameView calss』.以保持代碼『簡潔』同埋『重用』.

  1. 新建『java』
『File->New->Java Class』
  1. 封裝『Runnable』『Callback』
public class GameView extends SurfaceView implements Runnable,SurfaceHolder.Callback{
  1. 『SurfaceView』變量
int view_width,view_height;

public SurfaceHolder surfaceHolder;

public Surface surface;//用蒞渲染

  1. 構造函數
public GameView(Context context) {

super(context);

init(context);// 設置渲染

}

public GameView(Context context, AttributeSet attrs) {

super(context);

init(context);// 設置渲染

}

public GameView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context);

init(context);// 設置渲染

}

  1. 初此渲染设置
public void init(Context context){

this.surfaceHolder = getHolder();

this.surfaceHolder.addCallback(this);

this.surface = surfaceHolder.getSurface();

}

  1. 創建表層,啟動渲染線程 run()
@Override

public void surfaceCreated(SurfaceHolder surfaceHolder){

new Thread(this).start();

}

  1. 表層改變, 當手機方向改變触發, 係游戲要禁止旋轉方向.
 @Override

public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height){

view_width = width;

view_height = height;

}

  1. 表層銷毀
@Override

public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

}

  1. 游戲運算渲染線程
@Override

public void run() {

AssetManager assetManager = getContext().getAssets();

Lib.init(assetManager, surface, view_width, view_height);

while (true) {// 請求渲染

Lib.update();

}

}

 

Android Studio NDK-Java原生接口(JNI)

Android Studio NDK-Java原生接口(JNI)
Android Studio NDK-Java原生接口(JNI)

Android Java原生接口(JNI) 令 『Java』 同『C\C++』代碼相互調用. 之前係『MainActivity.java』声明『native』原生代碼接口.

static public native String stringFromJNI();

『native-lib.cpp』『C\C++』代碼, 它編譯共享庫『.so』檔

extern “C” JNIEXPORT jstring JNICALL

Java_net_bookcard_compass_MainActivity_stringFromJNI(JNIEnv* env,jobject  this) {

return env->NewStringUTF(“native-lib”) ;

}

缺點係只能『MainActivity.java』調用, 更佳方發係將原生代碼接口擺係單獨『Java Class』. 并声明為『static』, 可係任意位置調用『C\C++』代碼.

  1. 新建『Class』
『File』->『New』->『Java Class』
  1. 新『Java Class』填『java』
  2. 載入共享庫”geomanticcompass.so”
static {

System.loadLibrary(“geomanticcompass”);

}

  1. 声明『native』原生『static』代碼接口.
static public native String stringFromJNI();

 

Android LocationManager.getBestProvider()返回NULL

Android LocationManager.getBestProvider()返回NULL
Android LocationManager.getBestProvider()返回NULL

『GPS』全球定位代碼,係『eclipse』移過蒞『Android Studio』, 發現getBestProvider()返回NULL. 源於冇『權限』 , 而『Android 6』後要人手獲得授權, 冇『權限』getBestProvider()永遠返回null. 係程式啟動檢查『權限』, 若冇『權限』提出請求伸請.

string GetBestProvider (Criteria criteria, bool enabledOnly)

『GPS』定位伸請『權限』

<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/>
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>

『權限』

Manifest.permission.ACCESS_FINE_LOCATION 高精度定位
Manifest.permission.ACCESS_COARSE_LOCATION 低精度定位

檢查『權限』

int coarse = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION);
int fine = ContextCompat.checkSelfPermission(context,Manifest.permission.ACCESS_FINE_LOCATION);

返回值判斷係咪獲得『權限』

PackageManager.PERMISSION_GRANTED 有『權限』
PackageManager.PERMISSION_DENIED 冇『權限』

判斷有冇『權限』

if(coarse == PackageManager.PERMISSION_DENIED || fine == PackageManager.PERMISSION_DENIED )

請求伸請. context必需係Activity

String permission[] = new String[] { Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION};
ActivityCompat.requestPermissions((Activity) context,permission,REQUEST_CODE_GPS);

GPS權限請求碼

public static int REQUEST_CODE_GPS = 156;

處理GPS授權回調, 係MainActivity判斷授權

@Override

public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){

requestCode係權限請求碼

if(requestCode == GPS.REQUEST_CODE_GPS) {// 羅盤權限請求碼

判斷『權限』係咪獲得

if(grantResults[0] == PackageManager.PERMISSION_GRANTED &&

grantResults[1] == PackageManager.PERMISSION_GRANTED) { // 獲得授權

再次定位

GPS.UpdatesLocation();

交翻畀onRequestPermissionsResult()處理

   super.onRequestPermissionsResult(requestCode,permissions,grantResults);

}

 

 

Android Studio NDK-OpenGL ES 『正交投影』

Android Studio NDK-OpenGL ES 『正交投影』
Android Studio NDK-OpenGL ES 『正交投影』

3D游戲基于『透視投影』產生立體效果, 而2D游戲戲用『正交投影』產生平面效果, 生成等比例游戲.

  1. 指定視區像素尺碼, 『x』 『y』視區左下角,『width』 『height』視區寬高
glViewport(0,0,width, height);
  1. 設定『矩陣堆栈』為『投影矩陣堆栈』
glMatrixMode(GL_PROJECTION);
  1. 載入單位矩陣, 清除『堆栈』残留『矩陣』,以此唔受先前變换運算影响.
glLoadIdentity();
  1. 『正交投影』運算, Y軸視角『fovy』,Z軸視角『aspect』, 『zNear』近裁剪面距离约摸箱機方向Y軸加 『zFar』远裁剪面距离設較大数值.
gluOrtho( fovy, aspect, zNear, zFar );
  1. 設定『矩陣堆栈』為『模型視圖矩陣堆栈』
glMatrixMode(GL_MODELVIEW);
  1. 載入單位矩陣
glLoadIdentity();

 

基於視角『正交投影』

void gluOrtho(double  fovy,double aspect,double zNear,double zFar){

double  xmin, xmax, ymin, ymax;

ymax = zNear * tan(fovy * 3.141592654f / 360.0f);

ymin = -ymax;

xmin = ymin * aspect;

xmax = ymax * aspect;

glOrthof(xmin, xmax, ymin, ymax, zNear, zFar);

}

 

Android Studio 展現『Structure』

Android Studio 展現『Structure』
Android Studio 展現『Structure』

係『VC6』有『struct』同『Function』检索下拉窗口,可迅速定位代碼. 令工作事半工倍.

係『Android Studio』『struct』同『Function』检索視窗默認收埋.

  1. 撳『View』->『Tool Windows』->『Structure』展現『Structure』視窗
  2. 撳『Alt+7』展現『Structure』視窗
  3. 撳『Show Options Menu』->『Move To』->『Right Top』置於右上角

 

Android Fullscreen 全屏樣式

Android Fullscreen 全屏樣式
Android Fullscreen 全屏樣式

Android Studio設置全屏,通過編輯『themes.xml』

『themes.xml』
<style  name=”Theme.Fullscreen”  parent=”android:Theme.NoTitleBar.Fullscreen”>

編輯『AndroidManifest.xml』

『AndroidManifest.xml』
<application android:theme=”@style/Theme.Fullscreen”>

代碼係『eclipse』移稙過蒞, 『Android Studio』程式閃退. 因『MainActivity』繼承『AppCompatActivity』造成. 改為繼承『Activity』.

public class MainActivity extends  Activity

 

Android Studio NDK-OpenGL ES/EGL渲染

Android Studio NDK-OpenGL ES/EGL渲染
Android Studio NDK-OpenGL ES/EGL渲染

OpenGL EGL作為平臺冇関 API, 今程序冇視『Linux X Window』『Microsoft Windows』『Mac OS X Quatz』差異.用統壹接口同原生視窗聯接. 跨平臺API更易於移值. 所以OpenGL比DirectX更得人鐘意.

  1. 使用NDK
  2. 編譯OpenGL ES
  3. 布局OpenGL ES
  4. 先加入頭文檔
#include <GLES/gl.h> 標準OpenGL頭文檔
#include <GLES/glext.h> OpenGL實用架餐庫
#include <EGL/egl.h> EGL庫
#include <EGL/eglext.h> EGL架餐庫
#include <android/native_window_jni.h> 原生視窗庫ANativeWindow
  1. 冚辦爛EGL程式首先調用『eglGetDisplay()』, 得到『EGLDisplay』等同『原生視窗』, 『EGLDisplay』係整數索引.
EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
  1. 索引大於零即成功, 因為等於零失敗.
EGL_NO_DISPLAY 0失敗
  1. 初始EGL程式, 幷獲得『major』主版號 , 『minor』副版號
EGLint major,minor;

eglInitialize(display,&major,&minor)  ;

  1. 失敗返回EGL_FALSE, 查錯誤碼eglGetError()
EGL_BAD_DISPLAY 非有效EGLDisplay
EGL_NOT_INITALIZED 未能初始
  1. 穩『surface』渲染配置
EGLBoolean eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
  1. EglChooseConfig()函式參數
參數 簡介
EGLDisplay dpy 『原生視窗』索引
EGLint *attrib_list 指定屬性列表, 以EGL_NONE結屘
EGLConfig *configs 返回配置列表
EGLint config_size 指定配置列表長度
EGLint *num_config 返回配置長度
  1. 『EGLConfig』屬性
屬性 描述
EGL_SURFACE_TYPE EGL渲染表面類型 EGL_WINDOW_BIT
EGL_RENDERABLE_TYPE OpenGL版本 EGL_OPENGL_ES_BIT
EGL_RED_SIZE 紅色量位 8Bit
EGL_GREEN_SIZE 綠色量位 8Bit
EGL_BLUE_SIZE 藍色量位 8Bit
EGL_ALPHA_SIZE 透明量位 8Bit
EGL_DEPTH_SIZE 深度量位 16Bit
EGL_NONE 屬性列表以EGL_NONE結屘 0

屬性列表

EGLint    attrib_array[32];
  1. 設定『EGLConfig』屬性
attrib_array[0] = EGL_SURFACE_TYPE; attrib_array[1] = EGL_WINDOW_BIT;
attrib_array[2] = EGL_RENDERABLE_TYPE; attrib_array[3] = EGL_OPENGL_ES_BIT;
attrib_array[4] = EGL_RED_SIZE; attrib_array[5] = 8;
attrib_array[6] = EGL_GREEN_SIZE; attrib_array[7] = 8,
attrib_array[8] = EGL_BLUE_SIZE; attrib_array[9] = 8;
attrib_array[10] = EGL_ALPHA_SIZE; attrib_array[11] = 8;
attrib_array[12] = EGL_DEPTH_SIZE; attrib_array[13] = 16;
attrib_array[14] = EGL_NONE;  
  1. 據 attrib_array 返回最隹配置config
EGLint    config_number = 32;

EGLConfig config_array[32];

EGLConfig  config;// 配置

eglChooseConfig(display,attrib_array,config_array,config_number,&config_number);

  1. 匹配最佳配置
for(int i=0;i<config_number;++i)    {

eglGetConfigAttrib(openGL->display, config_array[i],EGL_RED_SIZE, &red);

eglGetConfigAttrib(openGL->display, config_array[i],EGL_GREEN_SIZE, &green);

eglGetConfigAttrib(openGL->display, config_array[i],EGL_BLUE_SIZE, &blue);

eglGetConfigAttrib(openGL->display, config_array[i],EGL_ALPHA_SIZE, &alpha);

eglGetConfigAttrib(openGL->display, config_array[i],EGL_DEPTH_SIZE, &depth);

if( red == 8 && green == 8 && blue == 8 && alpha == 8 && depth == 16){

openGL->config = config_array[i];// 最佳配置

break;

}

}

  1. 生成渲染視窗
EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
  1. eglCreateWindowSurface()函式參數
參數 簡介
EGLDisplay dpy 『原生視窗』索引
EGLConfig config 最佳配置
EGLNativeWindowType win SurfaceView
const EGLint *attrib_list 屬性列表
  1. 渲染視窗屬性
視窗屬性 描述
EGL_RENDER_BUFFER 渲染緩存 EGL_SINGLE_BUFFER『單緩存』EGL_BACK_BUFFER『雙緩存』
EGL_NONE 屬性列表以EGL_NONE結屘 0
  1. 屬性
attrib_array[0] = EGL_RENDER_BUFFER; attrib_array[1] = EGL_BACK_BUFFER;
attrib_array[2] = EGL_NONE;  
  1. 生成渲染視窗
surface_draw = eglCreateWindowSurface(display,config,nativeWindow,attrib_array);
  1. 獲得錯誤碼
錯誤碼EGLint error = eglGetError(); 簡介
EGL_BAD_MATCH 視窗唔匹配EGLConfig唔支持渲染
EGL_BAD_CONFIG 視窗唔匹配EGLConfig系統晤支持
EGL_BAD_NATIVE_WINDOW 原生視窗句柄冇效
EGL_BAD_ALLOC 冇法分配資源
  1. 關聯描述表, 将『EGLContext』『EGLSurface』與當前線程關聯, 『EGL』同『OpenGL』代碼需擺同壹綫程. 唔系eglSwapBuffers()返回
eglMakeCurrent(display,surface_draw,surface_draw,context);
  1. 『Native』層用『ANativeWindow 』蒞渲染.通過『Surface』得到『ANativeWindow』.
ANativeWindow* ANativeWindow_fromSurface(JNIEnv* env, jobject surface)
  1. Android 『java』層用『SurfaceView』蒞渲染, 提取『Surface』畀『Native』
SurfaceView surfaceView = (SurfaceView)findViewById(R.id.surface_view);
SurfaceHolder     surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
Surface             surface = surfaceHolder.getSurface();

Android Studio NDK-OpenGL ES布局

Android Studio NDK-OpenGL ES布局
Android Studio NDK-OpenGL ES布局

『Android Studio NDK』提供『EGL』連接『OpenGL』, 『EGL』被設計出來,作爲 OpenGL 和原生窗口系統之間的橋梁『Microsoft Windows』『Mac OS X Quatz』差異.用統壹接口同原生視窗聯接. 跨平臺API更易於移值. 所以OpenGL比DirectX更得人鐘意.

  1. 使用NDK
  2. 編譯OpenGL ES
  3. 載入共享庫”app.so”,『app』系你庫名.
static {

System.loadLibrary(“app”);

}

  1. 首先修改布局『xml』添加『SurfaceView』,而非『GLSurfaceView』.
 <android.view.SurfaceView

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:id=”@+id/surface_view” />

  1. 係『xml』添加『全屏樣式』
<style  name=”FullscreenTheme”  parent=”android:Theme.NoTitleBar.Fullscreen”  >
  1. 係『java』加『android.view.SurfaceHolder.Callback』用蒞行『SurfaceView』『創建』『改變』『銷毀』
        @Override

public void surfaceCreated(SurfaceHolder surfaceHolder) {

new Thread(this).start();//渲染,啟動線程  Runnable.run()

}

        @Override

public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {

}

        @Override

public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

}

  1. 係『java』加『Runnable』用蒞行OpenGL 渲染線程, 『EGL』同『OpenGL』代碼需擺同壹綫程. 唔系eglSwapBuffers()返回EGL_BAD_SURFACE.
    @Override

public void run() {

init( );

while (true) {

update(0);

}

}

  1. 係『xml』為Google Play加版本過濾
<uses-sdk        android:minSdkVersion=”9″       android:targetSdkVersion=”19″ />
  1. 係『txt』穩庫文檔
find_library( OpenGL-lib libGLESv1_CM.so  )
find_library( OpenEGL-lib libEGL.so )
find_library( Android-lib libandroid.so )
  1. 係『txt』連連接庫文檔
target_link_libraries(app

${OpenGL-lib}

${OpenEGL-lib}

${Android-lib})

  1. 加入頭文檔
#include <GLES/gl.h> 標準OpenGL頭文檔
#include <GLES/glext.h> OpenGL架餐庫
#include <EGL/egl.h> EGL頭文檔
#include <EGL/eglext.h> EGL架餐庫
#include <android/native_window_jni.h> 原生視窗庫

 

Android Studio NDK-OpenGL ES-3D相機gluPerspective()

Android Studio NDK-OpenGL ES-3D相機gluPerspective()
Android Studio NDK-OpenGL ES-3D相機gluPerspective()

將『OpenGL』移稙過『Andord』. 但OpenGL ES偏偏冇gluPerspective()視錐投影.但有glFrustumf()設定視口.

通過glFrustumf()設置視口, 得到 gluPerspective()視錐投影.
void gluPerspective(double  fovy,double aspect,double zNear,double zFar){

double  ymax = zNear * tan(fovy * 3.141592654f / 360.0f);

double  ymin = -ymax;

double    xmin = ymin * aspect;

double    xmax = ymax * aspect;

glFrustumf(xmin, xmax, ymin, ymax, zNear, zFar);

}

3D相機投影代碼

glViewport(0,0,viewport_width,viewport_height); 重置視區尺寸
glMatrixMode(GL_PROJECTION); 設定投影矩陣
glLoadIdentity(); 載入單位矩陣
gluPerspective(fov,aspect_ratio,near_clip_z,far_clip_z); 設置視錐體投影
glMatrixMode(GL_MODELVIEW); 設定模型視圖矩陣
glLoadIdentity(); 載入單位矩陣

 

Android Studio NDK-OpenGL-交換緩存畫面eglSwapBuffers()返回EGL_BAD_SURFACE

Android Studio NDK-OpenGL-交换緩存画面eglSwapBuffers()返回EGL_BAD_SURFACE
Android Studio NDK-OpenGL-交换緩存画面eglSwapBuffers()返回EGL_BAD_SURFACE

將『風水羅盤』由『Windows』移稙過『Andord』. 係交換緩存畫面『eglSwapBuffers()』返回『EGL_FALSE』, 『eglGetError()』返回『EGL_BAD_SURFACE』.

EGLBoolean ret = eglSwapBuffers(display,surface);

if(ret == EGL_FALSE){

GLint error = eglGetError();

if(error == EGL_BAD_SURFACE){

}

}

係『Windows』有『Winmain()』入口. 可以控制冚個整游戲運作, 係 『Winmain()』 游戲『運行』『渲染』都係主線程行.

而 『Andord』冇『Winmain()』. 游戲『運行』『渲染』要係新線程『Thread()』行. 而『EGLContext』同『EGLSurface』需係同壹線程『Thread()』生成, 唔係『eglSwapBuffers()』投『EGL_BAD_SURFACE』錯誤碼.

知錯係邊就易整, 將egl()程式擺係新線程『Thread()』行,而非『 onSurfaceCreated()』.

新線程『Thread()』
EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id);
EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
ANativeWindow* ANativeWindow_fromSurface(JNIEnv* env, jobject surface);
EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);

 

 

Android Studio NDK- assets訪問讀

Android Studio NDK- assets讀係Android游戲唔將游戲資源擺係『res』而係『assets』, 事因『res』限制層次結構, 而『assets』允許任意檔案資料夾層次結構.位於『assets』檔案只讀唔寫. NDK需android 9版先支持.

係『CMakeLists.txt』添加『libandroid.so』庫

CMakeLists.txt
find_library( Android-lib libandroid.so )
target_link_libraries( geomanticcompass

${OpenGL-lib}

${OpenEGL-lib}

${Android-lib}

${log-lib})

係c檔案加入頭檔

#include <android/asset_manager.h>
#include <android/asset_manager_jni.h>

『assets』檔通過『AssetManager』訪問

AssetManager assetManager = this.getAssets();

係『NDK』『assets』檔通過『AAssetManager』訪問, 『AAssetManager』接口

AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager);

將『AssetManager』傳過去獲得『AAssetManager』

extern “C”

JNIEXPORT void JNICALL Java_net_bookcard_geomanticcompass_MainActivity_init(JNIEnv *env, jobject thiz, jobject egl_config, jobject asset_manager) {

AAssetManager *assetManager= AAssetManager_fromJava(env, asset_manager);

}

public native void init(AssetManager asset_manager);
init (getAssets());

 

開啟『assets』檔, 冇需畀絕對路徑, 而係畀『assets』相對路俓

AAsset *asset = AAssetManager_open(nativeasset, “name.bmp”, AASSET_MODE_BUFFER);

檔长度

int size = AAsset_getLength(asset)

分配記憶體

PBYTE data = (PBYTE)malloc(size);

讀『assets』檔

AAsset_read(asset, data, size);

載入分析

Load(data, size);

释放记忆体

free(data);

閂『assets』檔

AAsset_close(asset);

 

將游戲資源擺係『assets』下,『assets』『res』同位於『app\src\main』之下.

檔案資料夾 位置
assets D:\Android\game\app\src\main\assets
cpp D:\Android\game\app\src\main\cpp
java D:\Android\game\app\src\main\java
res D:\Android\game\app\src\main\res

 

 

Android Studio NDK-Frames幀

Android Studio NDK-Frames幀
Android Studio NDK-Frames幀

係游戲每『渲染』1『畫面』呌1『幀』Frame,  影書每秒24格『菲林』24『幀』, Android每秒至高60『幀』.

Android Studio NDK

  1. 通過clock()獲得進程時鐘 度量時間整數值.
  2. 通過sysconf(_SC_CLK_TCK) 獲得時鐘信號, 每秒時鐘單元值, 係Linux此值為100
  3. 計算秒 float seconds= (float)clock() / (float)sysconf(_SC_CLK_TCK);
#include <time.h>
clock_t clock(void)

 

#include <unistd.h>
long sysconf(int name)

 

量度程式耗時

long  clockTicks = sysconf(_SC_CLK_TCK);// 時鐘信號

clock_t startTime = clock();//當前時鈡

// 調用程式

clock_t currentTime = clock();//當前時鈡

float seconds = (float)(currentTime – startTime) / (float)clockTicks;

 

需要struct結構用蒞計『幀』Frame, 公式加下:

float _fps = Frames * (double)(currentTime – startTime) / (float)clockTicks ;

 

『幀』Frame
typedef struct FPS_TYP {

clock_t  startTime;// 啓動時鐘

long  clockTicks;// 時鐘信號

float Frames;// 每秒渲染幀數

int n;// 幀計

}FPS,*FPS_PTR;

 

計算每秒渲染幀
float Get_FPS(FPS_PTR fps){

++fps->n;// 幀加壹

if (fps->n > 100) {

fps->Frames = Get_FPS(fps, fps->n);

fps->n = 0;

}

return fps->Frames;

}

float Get_FPS(FPS_PTR fps, int  Frames){

clock_t  currentTime = clock();// 進程時鈡

double _fps = (double)Frames * (double)(currentTime – fps->startTime) / (float)fps->clockTicks ;

fps->startTime = currentTime;// 重置時間

return (float)_fps;

}

 

Android Studio NDK-編譯目標唔乾淨

Android Studio NDK-編譯目標唔乾淨
Android Studio NDK-編譯目標唔乾淨

Android Studio NDK編譯又蒞失敗, 『ninja: error: unknown target ‘clean’, did you mean ‘ninja -t clean’? 』大意目標唔乾淨.

  1. 撳『Win+E』進入NDK工程檔䅁夾.
  2. 進入『\app\.cxx\RelWithDebInfo\3t474c6q\』,數字檔䅁夾隨機生成
  3. 進入『arm64-v8a』『armeabi-v7a』『x86』『x86_64』檔䅁夾, 『冚辦爛』刪『子檔䅁』『子文檔』.
  4. 『arm64-v8a』『armeabi-v7a』『x86』『x86_64』保留唔刪
  5. 再蒞編譯掂
Build command failed.
Error while executing process C:\Users\bookc\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C D:\Android\GeomanticCompass\app\.cxx\RelWithDebInfo\3t474c6q\arm64-v8a clean}

ninja: Entering directory `D:\Android\GeomanticCompass\app\.cxx\RelWithDebInfo\3t474c6q\arm64-v8a’

ninja: error: unknown target ‘clean’, did you mean ‘ninja -t clean’?

 

Android Studio NDK-OpenGL ES替換gluLookAt()

OpenGL ES替換gluLookAt()
OpenGL ES替換gluLookAt()

gluLookAt()  UVN相機模型,設定視點(相機)位置和視綫方向(矩陣運算).

void gluLookAt( GLdouble eyeX,

GLdouble eyeY,

GLdouble eyeZ,

GLdouble centerX,

GLdouble centerY,

GLdouble centerZ,

GLdouble upX,

GLdouble upY,

GLdouble upZ);

OpenGL ES冇gluLookAt() , 手工生成『旋轉矩陣』『相機位置』函式

void gluLookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez,

GLfloat centerx, GLfloat centery, GLfloat centerz,

GLfloat upx, GLfloat upy, GLfloat upz)

{

GLfloat m[16];// 旋轉矩陣

GLfloat x[3], y[3], z[3];

GLfloat mag;

//生成旋轉矩陣

// Z矢量

z[0] = eyex – centerx;

z[1] = eyey – centery;

z[2] = eyez – centerz;

mag = sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]);

if (mag) {

z[0]/= mag;

z[1]/= mag;

z[2]/= mag;

}

 

// Y矢量

y[0] = upx;

y[1] = upy;

y[2] = upz;

 

// X 矢量 = Y 叉積 Z

x[0] = y[1] * z[2] – y[2] * z[1];

x[1] = -y[0] * z[2] + y[2] * z[0];

x[2] = y[0] * z[1] – y[1] * z[0];

 

// 重新計算 Y = Z 叉積 X

y[0] = z[1] * x[2] – z[2] * x[1];

y[1] = -z[0] * x[2] + z[2] * x[0];

y[2] = z[0] * x[1] – z[1] * x[0];

 

 

// 叉積給出了平行四邊形的面積,對于非垂直單位長度向量;所以在這裏標準化x,y

mag = sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);

if (mag) {

x[0]/= mag;

x[1]/= mag;

x[2]/= mag;

}

 

mag = sqrt(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]);

if (mag) {

y[0]/= mag;

y[1]/= mag;

y[2]/= mag;

}

 

#define M(row,col)  m[col*4+row]

M(0, 0) = x[0];

M(0, 1) = x[1];

M(0, 2) = x[2];

M(0, 3) = 0.0;

M(1, 0) = y[0];

M(1, 1) = y[1];

M(1, 2) = y[2];

M(1, 3) = 0.0;

M(2, 0) = z[0];

M(2, 1) = z[1];

M(2, 2) = z[2];

M(2, 3) = 0.0;

M(3, 0) = 0.0;

M(3, 1) = 0.0;

M(3, 2) = 0.0;

M(3, 3) = 1.0;

#undef M

glMultMatrixf(m);

 

// 視點(相機)位置

glTranslatef(-eyex, -eyey, -eyez);

}

 

M.2 SSD 翅片導管散熱

M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱
M.2 SSD 翅片導管散熱CrystalDiskInfo
M.2 SSD 翅片導管散熱CrystalDiskInfo

近排天口興台電腦成日死機, CrystalDiskInfo睇『TOSHIBA XG3 M.2 MVME SSD』溫度高達73度. 睇中翅片散熱,銅導管,附送『導熱矽㬵片』同『導熱矽㬵脂』相比勝在可重用. 用肆眼鏍絲固定.

計漏咗翅片頂住顯卡,唔得插係 『PCIe 3.016』, 改插 『PCIe 2.04』. 唯壹安慰SSD高溫從74度跌到53度. 降溫20度.

 

SHAD TOP CASE SH39

39升尾箱
39升尾箱
39升尾箱
39升尾箱
39升尾箱
39升尾箱
KEY
KEY
托架
托架
托架
托架
托架
托架
托架
托架
托架
托架
39升尾箱
39升尾箱
39升尾箱
39升尾箱

『SUZUKI Gixxer155』唔畀擺係地下車庫. 擺係樓梯底油箱畀人劃交叉, 頭胎畀人用篤窿.擺係露天『好天哂落雨淋』.褸『車罩』冇掟識擺.冇計唯有裝尾箱放『車罩』.

SHAD 尾箱SH39/ SH40. 尺碼再大有可能頂邊箱SH23. SH39比SH40貴因SH39靚仔. 唔介意買SH40仲底.

裝『托架』RACK盡量褪後, 後坐車人闊落. 架餐『六角套筒』, 『十字螺絲批』. 『托架冚蓋』先裝弧面再裝直面.

SHAD TOP CASE SH39 39升尾箱
SHAD SIDE CASE SH23 23升邊箱

 

Android Studio NDK-fprintf()格式字符

Android Studio NDK-fprintf()格式字符
Android Studio NDK-fprintf()格式字符

係NDK調用fprintf ()格式字符函式報錯

fprintf(fp_error,buffer);
error: format string is not a string literal (potentially insecure) [-Werror,-Wformat-security]

原解fprintf()缺失參數.加入參數0問題消失.

fprintf(fp_error,buffer,0);

 

int printf(const char *format [,argument]…); 熒屏
int fprintf(FILE *stream,const char *format [,argument ]…); 文檔
int sprintf(char *buffer,const char *format [,argument] …); 記憶體

 

format格式 argument參數 簡介
c 字符 單個字符
C 字符 單個字符
d 整數 帶正負符號十進整數
i 整數 帶正負符號十進整數
o 整數 冇正負符號八進整數
u 整數 冇正負符號十進整數
x 整數 冇正負符號,細寫十六進整數.abcdef
X 整數 冇正負符號,大寫十六進整數.ABCDEF
e 浮點數 帶正負符號十進浮點數,指數版.
E 浮點數 帶正負符號十進浮點數, 指數版.
f 浮點數 帶正負符號十進浮點數
F 浮點數 帶正負符號十進浮點數
g 浮點數 係%e同%f中選
G 浮點數 係%e同%f中選
a
A
n
s 字符串 直至首個NULL
S 字符串 直至首個NULL
z
% 指定格式

 

樣式 輸出/寫入
sprintf (text, ” %2d\n”,  3); 03
sprintf (text, “%s\n “, “abcdef”); abcdef

 

Android Studio NDK 日期時間

Android Studio NDK 日期時間
Android Studio NDK 日期時間

Android 所用C/C++庫Bionic API. 即輕量級C/C++庫. 分32位同64位, 32位『time_t』有效期至2038年, 64位『__time64_t』有效期至3000年.

呌『tm』時間結構

struct tm { 結構時間
int tm_sec; 秒鐘[0~59]
int tm_min; 分鐘[0~59]
int tm_hour; 時鐘[0~23]
int tm_mday; 號[1~31]
int tm_mon; 月份[0~11] 需加1
int tm_year; 年份需加1900, 儒略歴
int tm_wday; 禮拜[0~1],禮拜日Sunday=0
int tm_yday; 天[0~365],1月1號=0
int tm_isdst; 夏令時為正, 否
long int tm_gmtoff; 當前時相對UTC往東時差,即東爲正西爲負.
const char* tm_zone;}; 時區縮寫

係『Win32 API』你需time()/_time64()獲得時間, 再蒞localtime()/_localtime64()根據時區轉爲本地時間『tm』

Win32  API版本
char time_text[280];

struct tm   temp_str;// 時間結构

__time64_t  temp_int;// 時間整数

_time64(&temp_int);// 获取時間

_localtime64_s(&temp_str ,&temp_int);// 根据時區轉為本地時間

sprintf(time_text, “%4d-%02d-%02d %02d:%02d:%02d”,

1900+temp_str.tm_year,1+temp_str.tm_mon, temp_str.tm_mday,

temp_str.tm_hour,temp_str.tm_min,temp_str.tm_sec);

2021-09-09 23:43:08

Android Studio NDK 『Bionic API』版本,可用localtime_r()根據時區獲得本地時間『tm』

Bionic API版本
    char time_text[280];// 時間文本

struct tm  temp_str;// 時間結構

time_t temp_int;// 32位時間整數

temp_int = time(0);

localtime_r(&temp_int,&temp_str);// 根據時區轉爲本地時間

sprintf(time_text, “%04d-%02d-%02d %02d:%02d:%02d”,

1900+temp_str.tm_year,1+temp_str.tm_mon, temp_str.tm_mday,

temp_str.tm_hour,temp_str.tm_min,temp_str.tm_sec);

2021-09-09 23:43:08

 

 

 

Android Studio NDK編譯錯誤 error undefined reference

Android Studio NDK編譯錯誤 error undefined reference
Android Studio NDK編譯錯誤 error undefined reference

新版Android Studio用CMake編譯so庫. 構建『Native C++』工程已自動生成『CMakeLists.txt』同『native-lib.cpp』, 但C/C++代碼係『native-lib.cpp』調用其它『.cpp』程式皆報錯『error: undefined reference』, 皆因冇將C/C++代碼編譯入so庫.

D:/Android/GeomanticCompass/app/src/main/cpp/native-lib.cpp:14: error: undefined reference to ‘IsEven(int)’

睇『CMakeLists.txt』文檔

係『add_library()』尾加入『math.cpp』生成鏈接文檔

add_library( geomanticcompass

SHARED

native-lib.cpp

math.cpp)

查找日志庫

find_library(log-lib        log)  

將目標文檔與庫文檔進行鏈接

target_link_libraries(geomanticcompass        math        ${log-lib})

 

 

Android Studio缺失插件 missing essential plugin

Android Studio缺失插件 missing essential plugin
Android Studio缺失插件 missing essential plugin

Android Studio崩潰後重啟弹出『missing essential plugin』缺必須插件,重装Android Studio問題依舊. 缺失插件可能插件崩潰被屏蔽. 係C: 盘搜索 『disabled_plugins.txt』将入面內容冚辦爛刪.

missing essential plugin

org.jietbrains.android

Please reinstall Android Studio from scratch

 

C:\Users\bookc\AppData\Roaming\Google\AndroidStudio2020.3\disabled_plugins.txt

 

Android程式入口Application

Android程式入口Application
Android程式入口Application

Android唔似Window有Winmain()/main()作程式入口. 而Android用Application作程式入口. 比Activity更早調用,也唔會因方向改變重複調用onCreate().

將Application.onCreate()當main()用. 將程式『初此』Init()冚辦爛摆何係度.

 

  1. 生永MainApplication继承Application 覆盖onCreate()
class MainApplication extends Application
  1. 配置『xml』
<application android:name=”.MainApplication” ></application>
  1. 係onCreate()『初此』Init()程式

 

public class MainApplication extends Application {

// 全局变量,应用程序句柄

private static MainApplication singleton;

//返回应用程序实例

public static MainApplication getInstance() {

return singleton;

}

//创建应用程序时调用

@Override

public final void onCreate(){

Context context;

singleton = this;//

super.onCreate();

context = this.getApplicationContext();

// 初此

}

// 記憶體低

@Override

public final void onLowMemory() {

super.onLowMemory();

}

// 释放憶體低

@Override

public final void onTrimMemory(int level) {

super.onTrimMemory(level);

}

// 改变配置时调用

@Override

public final void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

}

}

Android Studio C/ C++編程-使用NDK

Android Studio C/ C++編程-使用NDK
Android Studio C/ C++編程-使用NDK

Android Studio C/ C++編程開發环境由以下組件构成:

  1. 装『Android Studio
  2. Android SDK(Software Development Kit) 軟件開發包, Android Studio 己含
  3. Android NDK(Native Development Kit) 原生開發包, Android Studio 己含
  4. Java JDK(Java Development Kit) Android Studio 己包含Java開發包.
  5. CMake构建工具,编译原生库
  6. LLDB調試工具,调试原生代码
  7. 生成C/C++項目
  8. 係『native-lib.cpp』下生成C函式

 

Android Studio安装『NDK』同『CMake』

  1. 撳『Tools』 -> 『SDK Manager』
  2. 撳『Appearance & Behavior』-> 『System Settings』->『Android SDK』
  3. 撳『SDK Tools』
  4. 勾『NDK(Side by side)』
  5. 勾『CMake』
  6. 撳『Apply』下載

 

生成C/C++工程

  1. 啟用Android Studio
  2. 撳『Projects』->『New Project』
  3. 『Templates』撳『Phone and Tablet』手機同平板
  4. 撳『Native C++』
  5. 『Name』指『程式名』填『經倫羅盤/Geomantic Compass』
  6. 『Package name』指『包名』,將网站『域名』倒置加『.程式名』『domain.name』 确保唯壹性,如『net.bookcard.GeomanticCompass』
  7. 『Language』指編程言, 默認『Kotlin』選『Java』.
  8. 『Save location』指工程存檔路徑,只可係ASCII碼,如『D:\Android\GeomanticCompass』
  9. 『Minimum SDK』允許運行Android平臺, 選最細SDK版本,获得盡量多設备支持.
  10. 『Use legacy android support libraries』用旧版android支持库.
  11. 撳『Next』
  12. 『C++ Standard』选择C++ 标准,默認『Toolchain Default』用『 CMake』 设置.
  13. 撳『Finish』自動构建C/ C++工程

 

係『native-lib.cpp』下生成C函式

native-lib.cpp
extern “C” JNIEXPORT jstring JNICALL

Java_net_bookcard_geomanticcompass_Lib_stringFromJNI(

JNIEnv* env,

jobject /* this */) {

std::string hello = “Hello from C++”;

return env->NewStringUTF(hello.c_str());

}

  1. 『extern “C”』声明C程式
  2. 『JNIEXPORT』
  3. 『jstring』程式返回類型
  4. 『JNICALL』参数压桟順序
  5. 函式名以『文檔夾路徑』組成,『Java_package_function』區分大細寫.
  6. 函式『Java』開頭, 因位於『Java』根文檔夾
  7. 函式『net_bookcard_geomanticcompass』包名文檔夾
  8. 函式『Lib』指java 文件Lib calss
  9. 函式『stringFromJNI』指函式名
  10. 参數『JNIEnv* env』調用Java函式
  11. 『jobject』
  12. 最後先係函式参數

 

真機調試Android程式

  1. 手機用USB線同电脑相連
  2. 『Build』->『Make Projects』生成工程
  3. 『Run』->『Debug ‘app’』 調試工程

 

 

 

 

配置『系統變數』

  1. 撳『Win+Pause Break』
  2. 撳『變更設定』開啟『系統內容』
  3. 撳『進階』->『環境變數』
  4. 『系統變數』->『新增』
  5. 『變數名稱』
  6. 『變數值』

 

装Android NDK

  1. 撳『File』-> 『Project Structure』或『Ctrl+Alt+Shift+S』
  2. 撳『SDK Location』
  3. 『Android NDK location』撳『Download』下載『Android NDK』
  4. 『Android NDK location』『C:\Users\user\AppData\Local\Android\Sdk\ndk\23.0.7599858』

 

Android Studio默認安装Android SDK

  1. 撳『File』->『New Project Settings』->『Project Structure』
  2. 撳『SDK Location』
  3. 『Android SDK location』『C:\Users\user\AppData\Local\Android\Sdk』

 

Android Studio默認安装Java JDK

  1. 撳『File』->『Project Structure』
  2. 撳『SDK Location』
  3. 『JDK Location』 『C:\Program Files\Android\Android Studio\jre』
  4. 設定『環境變數』

 

 

验証『Java JDK』安装

  1. 開啟命令輸入模式『EXE』
  2. 輸入『java -version』执行
  3. 安装成功則显示JDK版本号

Android Studio設定字體尺碼

Android Studio設定字體尺碼
Android Studio設定字體尺碼

Android Studio默認字體細睇代碼耗神, 而Android Studio唔支持滑輪字體尺碼. 你需要手動設定.

Android Studio設定字體尺碼

  1. 撳『File』->『Settings』或者撳『Ctrl+Alt+S』啟動『Settings』
  2. 撳『Edit』->『Font』
  3. 設定『Size』值默認12, 放大壹倍設
  4. 撳『Apply』应用設定.

Android禁程式頻繁调用onCreate

Android禁程式頻繁调用onCreate
Android禁程式頻繁调用onCreate

Android手機『方向切换』『滑出鍵盘』, Android會認為配置改變, 将销毁并重啟程式. 調用activity:onCreate()會大量占用CPU時間. 係游戲造成500ms以上都唔可接受. 編輯『AndroidManifest.xml』係『<activity>』元素『configChanges』属加入『orientation方向切换』同『keyboardHidden滑出鍵盘』『keyboard插入键盘』. 係MainActivity重载onConfigurationChanged ()自己處理, 達置 『方向切换』『滑出鍵盘』冇需再次调周onCreate().

AndroidManifest.xml
<activity

android:name=”.MainActivity”

android:configChanges=”keyboard|keyboardHidden|orientation”>

</activity>

 

MainActivity
    @Override

public void onConfigurationChanged(Configuration newConfig) {

if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {// 横向

}

else

if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {// 纵向

}

if(newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO )    {//  显示键盘

}

super.onConfigurationChanged(newConfig);

}

 

Android程式强制安装SD卡

Android程式强制安装SD卡
Android程式强制安装SD卡

Android程式默認装係内部存储,因佢有极快讀寫速度, 係Android2.2 後可强制装係SD卡, 但SD讀寫慢, 可能會影响程式表現. 編輯AndroidManifest.xml係manifest添installLocation属. 預設装係外部存储 preferExternal.

AndroidManifest.xml
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”

package=”net.bookcard.GeomanticCompass”

android:installLocation=”preferExternal”>

</manifest>

 

Android Studio安装指南

Android Studio安装指南
Android Studio安装指南
初建Android 工程Hello World
初建Android 工程Hello World
真機調試Android程式
真機調試Android程式

装Android Studio可簡化搭建開發环境過程. 且集成『Open JDK』同『Android SDK』

Android Studio安装指南

  1. 下載android Studio『https://developer.android.com/studio』『android-studio-2020.3.1.24-windows.exe
  2. Android Studio 安装路径『C:\Program Files\Android\Android Studio』
  3. 『Install Type』勾『Custom』自定.
  4. 自Android Studio2.2已集成『Open JDK』,『Select Default JDK Location』安装檔案夾『C:\Program Files\Android\Android Studio\jre』
  5. 界面主题『Select UI Theme』有Darcula同Light揀. 白底黑字更適宜睇文本
  6. 『SDK Components Setup』勾『Android SDK』『API:Android 』
  7. 『Downloading Components』安装完成.

 

SDK Manager装Android SDK 組件

  1. 啟動『Android Studio』
  2. 『Settings for New Projects』
  3. 『Appearance & Behavior->System Settings->Android SDK->SDK Tools』

 

初建Android 工程Hello World

  1. 啟動『Android Studio』
  2. 撳『Projects->New Project』
  3. 撳『Phone and Tablet』手機同平板
  4. 『模板』撳『Empty Activity』.
  5. 『Name』指『程式名』填『風水羅盤』
  6. 『Package name』指『包名』,將网站『域名』倒置加『.程式名』『domain.name』 确保唯壹性,如『net.bookcard.GeomanticCompass』
  7. 『Language』指編程言, 默認『Kotlin』選『Java』.
  8. 『Save location』指工程存檔路徑,只可係ASCII碼,如『D:\Android\GeomanticCompass』
  9. 『Minimum SDK』允許運行Android平臺, 選最細SDK版本,获得越多運行設备支持.
  10. 『Use legacy android support libraries』用旧版android支持库.
  11. 撳『Finish』

 

激活手機/平板開發模式

  1. 撳『設定』->『我的裝置』->『全部参數』.
  2. 連續撳『版本』, 直至提示进入『開發人員模式』.
  3. 撳『設定』->『更多設定』->『開發者選項』.
  4. 激活『開啟開發人員選項』
  5. 激活『USB調試』
  6. 激活『USB安装』
  7. 激活『USB調試(安全設定)』

 

真機調試Android程式

  1. 手機用USB線同电脑相連
  2. 『Run』->『Debug ‘app’』

 

長曾彌虎徹

長曾彌虎徹
長曾彌虎徹

『逆刃』畀『虎徹』斬断,刀刃睇到多處缺口且血水黐刀. 『虎徹』受歏迎贋品充斥,此刀亦未必堅.

『虎徹』刀匠『長曾彌興里』, 其家族係『近江』鍛造盔鎧甲,係『關原之戰』後天下太平, 導致鎧甲冇人愛, 年近半百『興里』去『越前』拜『和泉守兼重』門下, 半百後係『江户』创立『虎徹』流,『興里』大器晚成.試刀師壹刀腰斬屍身劈断石燈,外剛內韌刀刃絲毫冇損,列『最上大業物』. 『虎徹』係『興里』在生已有贋品流通.

『興里』細時曾出家法號『虎徹』. 其作品皆刻『虎徹』刀銘, 成『虎徹』流开山師祖.『興里』係『明曆貳年』鍛造『長曾彌虎徹』.

新選組組長『近藤勇』托刀店尋『虎徹』, 相傳老細將『源清麿』刀銘磨去,刻成『虎徹』賣畀『近藤勇』.憑借『虎徹』 係『池田屋事件』中斬殺多名幕末志且全身而退. 咁先有『今夜虎徹飲血止渴』.

『長曾彌虎徹』
刀匠 長曾彌興里
鍛造 年 『明曆貳年』儒略曆1656年
持有 近藤勇『明曆叁年』儒略曆1863年

 

 

 

Kingston之DataTraveler DTSE9 G2  32GB

Kingston之DataTraveler DTSE9 G2 32GB Kingston之DataTraveler DTSE9 G2 32GB又有两隻Kingston手指神咗, Kingston DTSE9 G2 以前好貴,支持USB3.1/3.0接口.用 CrystalDiskMark測試『讀』每秒37MB,『寫』每秒27MB. 慢到死.

性能測試 『讀』Read MB/s 『寫』Write MB/s
Seq Q32 T1 37.25 27.24
4KiB Q8T8 9.160 5.659
4KiB Q32T1 8.815 3.757
4KiB Q1T1 8.109 3.632

 

 

風水羅盤-三合盤

風水羅盤-三合盤
風水羅盤-三合盤
風水羅盤-三合盤
風水羅盤-三合盤

『三合盤』由叁層廿四山組成,『三合廿四山陰陽』『 䙜針廿肆山』『中針廿肆山盤

風水羅盤由六部分組成.『外盤』『內盤』『天池』『天心十道』『層數』『垂直綫』.

外盤 又叫『
底盤』.需呈正四方形每邊尺寸需均等.四邊筆直,不能彎曲.因四邊有助於『墻身』與『碑面』平行『風水羅盤』.
內盤 又叫『
面盤』正圓形可旋轉. 將刻度資信刻在不同層內.而『內盤』『天池』磁針叠在紅綫上.則可從十字線測線位.
天池 即位於中心指南針,磁針一端如叉指北,另一端直針指南.
天心十道 橫竪各一紅綫形成十字 .
層數 指在羅盤上刻有文字符號一層層圓環.
垂直綫 『天心十道』一端延申綫.

 

三元盤
天池
後天八卦
八煞黃泉盤
坐山劫煞盤
三合廿四山陰陽
穿山柒拾貳龍盤
地母翻卦九星盤
中針廿肆山盤』/納音伍行
透地陸拾龍盤
平分陸拾龍分度盤
百貳龍分金地盘正針
䙜針廿肆山』/太陽到山
百貳龍分金天盘縫針
盈縮陸拾龍
盈縮陸拾龍伍行所属
廿捌宿天星分金
叁百陸拾度

 

風水羅盤-百貳龍分金人盤中針

風水羅盤-百貳龍分金人盤中針
風水羅盤-百貳龍分金人盤中針

『百貳龍分金』『人盤中針 』與『地盤正針』 排列壹致, 『中針』令『百貳龍分金』逆轉半宮.

『百貳龍分金地盤正針』zing3_zam1 廿四卦山
『百貳龍分金天盤縫針』fung4_zam1 廿四卦山順轉半宮
『百貳龍分金人盤中針』zung1_zam1 廿四卦山逆轉半宮

 

廿四卦山 百貳龍分金『吉利』 百貳龍分金『凶惡』
甲山 『丙寅』『庚寅』 『甲寅』『戊寅』『壬寅』
卯山 『丁卯』『辛卯』 『乙卯』『己卯』『癸卯』
乙山 『丁卯』『辛卯』 『乙卯』『己卯』『癸卯』
辰山 『丙辰』『庚辰』 『甲辰』『戊辰』『壬辰』
巽山 『丙辰』『庚辰』 『甲辰』『戊辰』『壬辰』
巳山 『丁巳』『辛巳』 『乙巳』『己巳』『癸巳』
丙山 『丁巳』『辛巳』 『乙巳』『己巳』『癸巳』
午山 『丙午』『庚午』 『甲午』『戊午』『壬午』
丁山 『丙午』『庚午』 『甲午』『戊午』『壬午』
未山 『丁未』『辛未』 『乙未』『己未』『癸未』
坤山 『丁未』『辛未』 『乙未』『己未』『癸未』
申山 『丙申』『庚申』 『甲申』『戌申』『壬申』
庚山 『丙申』『庚申』 『甲申』『戌申』『壬申』
酉山 『丁酉』『辛酉』 『乙酉』『己酉』『癸酉』
辛山 『丁酉』『辛酉』 『乙酉』『己酉』『癸酉』
戌山 『丙戌』『庚戌』 『甲戌』『戊戌』『壬戌』
乾山 『丙戌』『庚戌』 『甲戌』『戊戌』『壬戌』
亥山 『丁亥』『辛亥』 『乙亥』『己亥』『癸亥』
壬山 『丁亥』『辛亥』 『乙亥』『己亥』『癸亥』
子山 『丙子』『庚子』 『甲子』『戊子』『壬子』
癸山 『丙子』『庚子』 『甲子』『戊子』『壬子』
醜山 『丁醜』『辛醜』 『乙丑』『己醜』『癸醜』
艮山 『丁醜』『辛醜』 『乙丑』『己醜』『癸醜』
寅山 『丙寅』『庚寅』 『甲寅』『戊寅』『壬寅』

 

廿四卦山 百貳龍分金Baak_Ji_Lung_Fan_Gam
甲山 『甲寅』『丙寅』『戊寅』『庚寅』『壬寅』
卯山 『乙卯』『丁卯』『己卯』『辛卯』『癸卯』
乙山 『乙卯』『丁卯』『己卯』『辛卯』『癸卯』
辰山 『甲辰』『丙辰』『戊辰』『庚辰』『壬辰』
巽山 『甲辰』『丙辰』『戊辰』『庚辰』『壬辰』
巳山 『乙巳』『丁巳』『己巳』『辛巳』『癸巳』
丙山 『乙巳』『丁巳』『己巳』『辛巳』『癸巳』
午山 『甲午』『丙午』『戊午』『庚午』『壬午』
丁山 『甲午』『丙午』『戊午』『庚午』『壬午』
未山 『乙未』『丁未』『己未』『辛未』『癸未』
坤山 『乙未』『丁未』『己未』『辛未』『癸未』
申山 『甲申』『丙申』『戌申』『庚申』『壬申』
庚山 『甲申』『丙申』『戌申』『庚申』『壬申』
酉山 『乙酉』『丁酉』『己酉』『辛酉』『癸酉』
辛山 『乙酉』『丁酉』『己酉』『辛酉』『癸酉』
戌山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
乾山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
亥山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
壬山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
子山 『甲子』『丙子』『戊子』『庚子』『壬子』
癸山 『甲子』『丙子』『戊子』『庚子』『壬子』
醜山 『乙丑』『丁醜』『己醜』『辛醜』『癸醜』
艮山 『乙丑』『丁醜』『己醜』『辛醜』『癸醜』
寅山 『甲寅』『丙寅』『戊寅』『庚寅』『壬寅』

 

風水羅盤-百貳龍分金天盤縫針

風水羅盤-百貳龍分金天盤縫針
風水羅盤-百貳龍分金天盤縫針

『百貳龍分金』地盤縫針舆『地盤正針』排列壹致, 而『縫針』令『百貳龍分金』順轉半宮.

『百貳龍分金地盤正針』zing3_zam1 廿四卦山
『百貳龍分金天盤縫針』fung4_zam1 廿四卦山順轉半宮
『百貳龍分金中針』ZUNG1_ZAM1 廿四卦山逆轉半宮

 

廿四卦山 百貳龍分金『吉利』 百貳龍分金『凶惡』
甲山 『丙寅』『庚寅』 『甲寅』『戊寅』『壬寅』
卯山 『丁卯』『辛卯』 『乙卯』『己卯』『癸卯』
乙山 『丁卯』『辛卯』 『乙卯』『己卯』『癸卯』
辰山 『丙辰』『庚辰』 『甲辰』『戊辰』『壬辰』
巽山 『丙辰』『庚辰』 『甲辰』『戊辰』『壬辰』
巳山 『丁巳』『辛巳』 『乙巳』『己巳』『癸巳』
丙山 『丁巳』『辛巳』 『乙巳』『己巳』『癸巳』
午山 『丙午』『庚午』 『甲午』『戊午』『壬午』
丁山 『丙午』『庚午』 『甲午』『戊午』『壬午』
未山 『丁未』『辛未』 『乙未』『己未』『癸未』
坤山 『丁未』『辛未』 『乙未』『己未』『癸未』
申山 『丙申』『庚申』 『甲申』『戌申』『壬申』
庚山 『丙申』『庚申』 『甲申』『戌申』『壬申』
酉山 『丁酉』『辛酉』 『乙酉』『己酉』『癸酉』
辛山 『丁酉』『辛酉』 『乙酉』『己酉』『癸酉』
戌山 『丙戌』『庚戌』 『甲戌』『戊戌』『壬戌』
乾山 『丙戌』『庚戌』 『甲戌』『戊戌』『壬戌』
亥山 『丁亥』『辛亥』 『乙亥』『己亥』『癸亥』
壬山 『丁亥』『辛亥』 『乙亥』『己亥』『癸亥』
子山 『丙子』『庚子』 『甲子』『戊子』『壬子』
癸山 『丙子』『庚子』 『甲子』『戊子』『壬子』
醜山 『丁醜』『辛醜』 『乙丑』『己醜』『癸醜』
艮山 『丁醜』『辛醜』 『乙丑』『己醜』『癸醜』
寅山 『丙寅』『庚寅』 『甲寅』『戊寅』『壬寅』

 

廿四卦山 百貳龍分金Baak_Ji_Lung_Fan_Gam
甲山 『甲寅』『丙寅』『戊寅』『庚寅』『壬寅』
卯山 『乙卯』『丁卯』『己卯』『辛卯』『癸卯』
乙山 『乙卯』『丁卯』『己卯』『辛卯』『癸卯』
辰山 『甲辰』『丙辰』『戊辰』『庚辰』『壬辰』
巽山 『甲辰』『丙辰』『戊辰』『庚辰』『壬辰』
巳山 『乙巳』『丁巳』『己巳』『辛巳』『癸巳』
丙山 『乙巳』『丁巳』『己巳』『辛巳』『癸巳』
午山 『甲午』『丙午』『戊午』『庚午』『壬午』
丁山 『甲午』『丙午』『戊午』『庚午』『壬午』
未山 『乙未』『丁未』『己未』『辛未』『癸未』
坤山 『乙未』『丁未』『己未』『辛未』『癸未』
申山 『甲申』『丙申』『戌申』『庚申』『壬申』
庚山 『甲申』『丙申』『戌申』『庚申』『壬申』
酉山 『乙酉』『丁酉』『己酉』『辛酉』『癸酉』
辛山 『乙酉』『丁酉』『己酉』『辛酉』『癸酉』
戌山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
乾山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
亥山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
壬山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
子山 『甲子』『丙子』『戊子』『庚子』『壬子』
癸山 『甲子』『丙子』『戊子』『庚子』『壬子』
醜山 『乙丑』『丁醜』『己醜』『辛醜』『癸醜』
艮山 『乙丑』『丁醜』『己醜』『辛醜』『癸醜』
寅山 『甲寅』『丙寅』『戊寅』『庚寅』『壬寅』

 

風水羅盤-三元盤

風水羅盤-三元盤
風水羅盤-三元盤
風水羅盤-三元盤
風水羅盤-三元盤

『三元盤』主要特徵羅盤上刻有『六十四成卦』.又稱『蔣盤』或『易盤』.風水羅盤由六部分組成.『外盤』『內盤』『天池』『天心十道』『層數』『垂直綫』.

外盤 又叫『
底盤』.需呈正四方形每邊尺寸需均等.四邊筆直,不能彎曲.因四邊有助於『墻身』與『碑面』平行『風水羅盤』.
內盤 又叫『
面盤』正圓形可旋轉. 將刻度資信刻在不同層內.而『內盤』『天池』磁針叠在紅綫上.則可從十字線測線位.
天池 即位於中心指南針,磁針一端如叉指北,另一端直針指南.
天心十道 橫竪各一紅綫形成十字 .
層數 指在羅盤上刻有文字符號一層層圓環.
垂直綫 『天心十道』一端延申綫.

 

三元盤
天池
後天八卦
廿四天星
坐山劫煞/挨星
三合廿四山陰陽
易卦內盤-卦氣數
易卦內盤-成卦
易卦外盤-卦氣數
易卦外盤-外卦爻
易卦外盤-成卦
易卦星運-玖星
易卦星運-星數
易卦星運-父母天人地
太陽到山
廿捌宿天星分金
叁百陸拾度

 

風水羅盤-盈縮陸拾龍盤

風水羅盤-盈縮陸拾龍盤
風水羅盤-盈縮陸拾龍盤
風水羅盤-盈縮陸拾龍盤伍行所属
風水羅盤-盈縮陸拾龍盤伍行所属

『盈縮陸拾龍』同『透地陸拾龍』皆由『拾天干』『拾貳地支』排列且序同. 唯一區分每龍非平均分配,

『盈縮陸拾龍』論天氣『甲子』同『亥山』相對應.

『透地陸拾龍』論方位『甲子』同『壬山』相對應.

『盈縮陸拾龍』實為『陸拾壹龍』, 有盈有縮源自『天度伍行』, 同『三百陸拾伍日』對應.

『天度伍行』也呌『宿度伍行』. 『廿捌星宿』對應地球環繞太陽轉壹圈365日.

『廿捌星宿』有所属『伍行』,『星宿』細分出『天度伍行』.『盈縮陸拾龍』壹周365度(分).

『廿四卦山』 『盈縮陸拾龍』Jing_Suk_Luk_Sap_Lung
『壬山』『子山』 『甲子』『丙子』『戊子』『庚子』『壬子』
『癸山』『醜山』 『乙丑』『丁醜』『己醜』『辛醜』『醜醜』
『艮山』『寅山』 『丙寅』『戊寅』『庚寅』『壬寅』『甲寅』
『甲山』『卯山』 『丁卯』『己卯』『辛卯』『癸卯』『乙卯』
『乙山』『辰山』 『戊辰』『庚辰』『壬辰』『甲辰』『丙辰』
『巽山』『巳山』 『己巳』『辛巳』『癸巳』『乙巳』『丁巳』
『丙山』『午山』 『庚午』『壬午』『甲午』『丙午』『戊午』
『丁山』『未山』 『辛未』『癸未』『乙未』『丁未』『己未』
『坤山』『申山』 『壬申』『甲申』『丙申』『戊申』『庚申』
『庚山』『酉山』 『癸酉』『乙酉』『丁酉』『己酉』『辛酉』
『辛山』『戌山』 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
『乾山』『亥山』 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』

 

盈縮陸拾龍 伍行所属  
甲子 6 -23
丙子 5 -17.5
戊子 4 -13
庚子 7 -7.5
壬子 5.25 -1.375
乙丑 6 4.25
丁丑 6 10.25
己丑 5 15.75
辛丑 6 21.25
癸丑 5.75 27.125
丙寅 6 33
  2 37
戊寅 5 40.5
庚寅 6 46
壬寅 5.5 51.75
甲寅 7 58
丁卯 6 64.5
己卯 3 69
辛卯 10 75.5
癸卯 6.75 83.875
乙卯 6.25 90.375
戊辰 6 96.5
庚辰 6 102.5
壬辰 5.75 108.375
甲辰 6.75 114.625
丙辰 6 121
己巳 6.75 127.375
辛巳 6 133.75
癸巳 6 139.75
乙巳 7.25 146.375
丁巳 7 153.5
庚午 5 159.5
壬午 6.75 165.375
甲午 5 171.25
丙午 6 176.75
戊午 5 182.25
辛未 7+0.5+0.75 188.875
癸未 4 195
乙未 6 200
丁未 7+0.25+0.25 206.75
己未 6 213.5
壬申 6 219.5
甲申 5 225
丙申 5 230
戊申 7.5 236.25
庚申 5 242.5
癸酉 6+0.5+0.5 248.5
乙酉 6 255
丁酉 5 260.5
己酉 7 266.5
辛酉 6.25 273.125
甲戌 6 279.25
丙戌 5 284.75
戊戌 7.75 291.125
庚戌 6 298.0
壬戌 6 304.0
乙亥 6 310.0
丁亥 7 316.5
己亥 5.75 322.875
辛亥 7.25 329.375
癸亥 6 336

 

 

 

 

 

 

 

風水羅盤-三百陸拾度盤

風水羅盤-三百陸拾度盤

三百陸拾度盤基於希臘數學家將將正圓分360等分.每等分為壹度, 用係天文,出海.

刻度  
_LONG_
_short_

 

漢數字NUM 簡寫 阿拉伯數字
正zing   +
零leng 0
壹jat 1
貳ji 2
叁saam 3
肆sei 4
伍ng 5
陸luk 6
柒cat 7
捌baat 8
玖gau 9
拾sap/辻sap6 10
廿jaa 廿 20
卅saa 30
卌se3 40
圩/墟 伍拾 50
陸拾 60
柒拾 70
捌拾 80
玖拾 90
佰baak3 100
皕bik1『音近
壁祕』
貳佰 200
𤾩 3baak3 叁佰  

 

風水羅盤-太陰到山盤

風水羅盤-太陰到山盤世間有『太陽到山盤』自然有『太陰到山盤』, 同為『廿肆節氣』但排位啱啱掉轉.

廿肆山 太陰到山
拾壹 大雪 太陰大雪到壬山
冬至 太陰冬至到子山
拾貳 小寒 太陰小寒到癸山
大寒 太陰大寒到醜山
立春 太陰立春到艮山
雨水 太陰雨水到寅山
驚蟄 太陰驚蟄到甲山
春分 太陰春分到卯山
清明 太陰清明到乙山
穀雨 太陰穀雨到辰山
立夏 太陰立夏到巽山
小滿 太陰小滿到巳山
芒種 太陰芒種到丙山
夏至 太陰夏至到午山
小暑 太陰小暑到丁山
大暑 太陰大暑到未山
立秋 太陰立秋到坤山
處暑 太陰處暑到申山
白露 太陰白露到庚山
秋分 太陰秋分到酉山
寒露 太陰寒露到辛山
霜降 太陰霜降到戌山
立冬 太陰立冬到乾山
小雪 太陰小雪到亥山

太陰『到山』『到向』『三合照』

廿肆山 太陰到山 太陰到向 太陰三合照
大雪到山 芒種到向 立秋到坤 清明到乙
冬至到山 夏至到向 處暑到申 穀雨到辰
小寒到山 小暑到向 立夏到巽 白露到庚
大寒到山 大暑到向 小滿到巳 秋分到酉
立春到山 立秋到向 芒種到丙 寒露到辛
雨水到山 處暑到向 夏至到午 霜降到戌
驚蟄到山 白露到向 小暑到丁 立冬到乾
春分到山 秋分到向 大暑到未 小雪到亥
清明到山 寒露到向 大雪到壬 立秋到坤
穀雨到山 霜降到向 冬至到子 處暑到申
立夏到山 立冬到向 小寒到癸 白露到庚
小滿到山 小雪到向 大寒到醜 秋分到酉
芒種到山 大雪到向 立春到艮 寒露到辛
夏至到山 冬至到向 雨水到寅 霜降到戌
小暑到山 小寒到向 驚蟄到甲 立冬到乾
大暑到山 大寒到向 春分到卯 小雪到亥
立秋到山 立春到向 清明到乙 大雪到壬
處暑到山 雨水到向 冬至到子 穀雨到辰
白露到山 驚蟄到向 小寒到癸 立夏到巽
秋分到山 春分到向 小滿到巳 大寒到醜
寒露到山 清明到向 立春到艮 芒種到丙
霜降到山 穀雨到向 夏至到午 雨水到寅
立冬到山 立夏到向 小暑到丁 驚蟄到甲
小雪到山 小滿到向 大暑到末 春分到卯

 

風水羅盤-太陽到山盤

風水羅盤-太陽到山盤『廿肆節氣太陽到山盤』簡備『太陽到山盤』, 由『廿肆節氣』组成用係『落葬』『立碑』『擇日』『催吉』『化煞』

廿肆山 太陽到山
立春 太陽立春到壬山
雨水 太陽雨水到亥山
驚蟄 太陽驚蟄到乾山
春分 太陽春分到戌山
清明 太陽清明到辛山
穀雨 太陽穀雨到酉山
立夏 太陽立夏到庚山
小满 太陽小满到申山
芒種 太陽芒種到坤山
夏至 太陽夏至到未山
小暑 太陽小暑到丁山
大暑 太陽大暑到午山
立秋 太陽立秋到丙山
處暑 太陽處暑到巳山
白露 太陽白露到巽山
秋分 太陽秋分到辰山
寒露 太陽寒露到乙山
霜降 太陽霜降到卯山
立冬 太陽立冬到甲山
小雪 太陽小雪到寅山
拾壹 大雪 太陽大雪到艮山
冬至 太陽冬至到丑山
拾貳 小寒 太陽小寒到癸山
大寒 太陽大寒到子山

太陽『到山』『到向』『三合照』

廿肆山 太陽到山 太陽到向 太陽三合照
立春到山 立秋到向 芒種到坤 寒露到乙
大寨到山 大暑到向 小满到申 秋分到辰
小寒到山 小暑到向 立夏到庚 白露到巽
冬至到山 夏至到向 穀雨到酉 處暑到巳
大雪到山 芒種到向 清明到辛 立秋到丙
小雪到山 小满到向 春分到戌 大暑到午
立冬到山 立夏到向 驚蟄到乾 小暑到丁
霜降到山 穀雨到向 雨水到亥 夏至到未
寒露到山 清明到向 立春到壬 芒種到坤
秋分到山 春分到向 大寒到子 小满到申
白露到山 驚蟄到向 小寒到癸 立夏到庚
處暑到山 雨水到向 冬至到丑 穀雨到酉
立秋到山 立春到向 大雪到艮 清明到辛
大暑到山 大寒到向 小雪到寅 春分到戌
小暑到山 小寒到向 立冬到甲 驚蟄到乾
夏至到山 冬至到向 霜降到卯 雨水到亥
芒種到山 大雪到向 寒露到乙 立春到壬
小满到山 小雪到向 秋分到辰 大寒到子
立夏到山 立冬到向 白露到巽 小寒到癸
穀雨到山 霜降到向 處暑到巳 冬至到丑
清明到山 寒露到向 立秋到丙 大雪到艮
春分到山 秋分到向 大暑到午 小雪到寅
驚蟄到山 白露到向 小暑到丁 立冬到甲
雨水到山 處暑到向 夏至到末 霜降到卯

 

風水羅盤-易卦先天星卦氣盤

易卦內盤
易卦內盤
易卦外盤
易卦外盤

『玄空大卦風水』學, 以『易卦』『元運』為主, 故又呌『三元風水 』『大玄空卦』『玄空易卦』. 因起源於『易卦』所以.『易卦先天星卦氣盤』簡稱『易盤』.分『內盤』同『外盤』, 其『卦氣數』相反.『伍行』亦唔同.向用外盤配, 坐用內盤配.

『易卦先天星卦氣盤』簡稱『易盤』 『子山』

 

 

 

 

 

易卦外盤ji_gwaa_ngoi_pun 『子山』
卦氣數gwaa_hei_sou 外卦爻ngoi_gwaa_ngaau 成卦sing_gwaa

噬嗑

冇妄

明夷

既濟

家人

同人

中孚

歸妹

大畜

小畜

大壯

大有

 

大過

未濟

小過

 

易卦內盤ji_gwaa_noi_pun
卦氣數gwaa_hei_sou 成卦sing_gwaa
小畜
中孚
家人
既濟
大畜
揖六
明夷
小過
歸妹
大壯
未濟
噬嗑
大有
大過
冇妄
同人

內盤同外盤卦氣数相反, 伍行亦唔同, 向用外盤配, 坐用內盤配

卦氣数 伍行属

 

DJI OM4大疆手機雲台

DJI OM4大疆手機雲台 DJI OM4大疆手機雲台 DJI OM4大疆手機雲台 DJI OM4大疆手機雲台 DJI OM4大疆手機雲台

啉住做youtube蒞買手機雲台,冇进口『手機雲台』 唯有買大疆OM4, 磁吸手機夾快装快拆, 『雲台』通過 『藍牙』遙控『手機』.『手機』需装『DJI Mimo』, 『影相』『录影』『 設置』『激活』均通過『DJI Mimo』.

激活雲台.

  1. 長撳『M』著『雲台』
  2. 『手機』装『DJI Mimo』
  3. 『手機』啟用『藍牙』
  4. 啟動『DJI Mimo』激活雲台

 

使用雲台

  1. 『手機』啟用『藍牙』
  2. 『手機』啟動『DJI Mimo』
  3. 『手機』装『磁吸手機夾』同『雲台』磁鉄相吸.
  4. 『DJI Mimo』->『雲台』->『雲台自動校準』

 

M制 閂機態: 著機態:
長撳: 著機 閂機
撳壹下 電量 替换『

影相』/『録像』

撳两下 替换『橫拍』/『直拍』

 

撳制
M 著機/閂機
摇桿 上下推:雲台府仰轉動

左右推:雲台平移轉動

拍摄制 撳壹下: 『

影相』/『録像』

長撳: 連拍

變焦滑桿 相機變焦
扳雞 長撳: 鎖定,鬆手: 退出

撳壹下: 啟停智慧跟拍

撳两下: 雲台归位

撳叁下: 替换前後相機

 

大疆手機雲台 DJI OM4
磁吸快拆 Magnetic Quick Mount
便携折叠 Foldable & Portable
智慧跟拍 Active Track 3.0
橫竖切模 Quick Roll
手势遙控 Gesture Control
STORY模式 Story Mode

 

風水羅盤-易卦星運盤

風水羅盤-易卦星運盤

『易卦星運盤』又呌『卦運盤』.除『廿肆山』外仲有叁層.

  易卦星運jik_gwaa_sing_wan
首層: 廿肆山
次層 玖星Gau_Sing
叁層/細層 星數Sing_Sou
尾層/孻層 父母天地人元分野fu6_mou5_tin1_dei6_jan4

 

玖星 星數 父母天地人
捌/八
祿 叁/三
肆/四
玖/九
壹/一
陸/六
柒/七
貳/二
祿 叁/三
捌/八
玖/九
肆/四
陸/六
壹/一
貳/二
柒/七
肆/四
玖/九
捌/八
祿 叁/三
柒/七
貳/二
壹/一
陸/六
玖/九
肆/四
祿 叁/三
捌/八
貳/二
柒/七
陸/六
壹/一
捌/八
祿 叁/三
肆/四
玖/九
壹/一
陸/六
柒/七
貳/二
祿 叁/三
捌/八
玖/九
肆/四
陸/六
壹/一
貳/二
柒/七
肆/四
玖/九
捌/八
祿 叁/三
柒/七
貳/二
壹/一
陸/六
玖/九
肆/四
祿 叁/三
捌/八
貳/二
柒/七
陸/六
壹/一

 

星運盤由『江東卦』同『江西卦』组成, 上卦同下卦相同為北父卦, 由父卦之内叁爻所變卦即『江東卦』.

北父卦 為貪狼卦, 屬父元, 壹運卦.
變初爻 為左輔卦, 屬天元, 捌運卦.
變貳爻 為破軍卦, 屬人元, 柒運卦.
變叁爻 為武曲卦, 屬地元, 陸運卦.

 

江東卦系
武曲陸/地元 破軍柒/人元 左輔捌/天元 貪狽壹/父

上卦與下卦相反為南母卦, 由母卦之內三爻變卦係江西卦.

南母卦 為右弼卦, 屬母元, 九運卦
變初爻 為巨門卦, 屬天元, 二運卦
變貳爻 為禄存卦, 屬人元, 三運卦
變叁爻 為文曲卦, 屬地元, 四運卦

 

江西卦系
武曲四/地元 䘵存三/人元 巨門二/天元 右弼九/母

未濟三

既濟七

卦運盤用法, 须識『三元九運』, 『三元』係『上元』『中元』『下元』.『九運』係一至九運. 每元佔據一花甲, 三元為三花甲循環, 係風水学循䁵周期, 即『正元』. 而三個『正元』等于一個『大元』.

『三元九運』 简述
『三元』 『上元』『中元』『下元』合180年
『九運』 一至九運
『正元』 每元佔據一花甲, 三元為三花甲循環, 係風水学循䁵周期.
『大元』 三個『正元』

三元分運有两派,『平均卦分運』同『先天卦分運』.

『平均卦分運』 以三元壹百捌拾年除玖, 每運佔廿年.
『先天卦分運』 以三元壹百捌拾年配先天卦,陽爻佔玖年, 陰爻佔陸年.

 

平均卦分運表    
三元九運 所佔年期 儒略歷
一運 廿年 1864~1883
二運 廿年 1884~1903
三運 廿年 1904~1923
四運 廿年 1924~1943
五運 廿年 1944~1963
六運 廿年 1964~1983
七運 廿年 1984~2003
八運 廿年 2004~2023
九運 廿年 2024~2043

 

先天卦分運表
三元九運 所佔年期 儒略歷
一運 拾捌年 1864~1881
二運 廿肆年 1882~1905
三運 廿肆年 1906~1929
四運 廿肆年 1930~1953
五運 廿壹年 1954~1974
六運 廿壹年 1975~1995
七運 廿壹年 1996~2016
八運 廿柒年 2017~2043

先天卦分運冇五運,知九運所佔年份後, 依當運卦蒞取向. 如七運則立七運卦卦線, 八運則立八運卦卦線.『蒋大鴻』『冇水處以收氣為的, 有水處以收水為重』

角度
64份 5.625

 

 

 

風水羅盤-中針廿肆山盤

風水羅盤-中針廿肆山盤『地盤廿四山』逆旋半卦山『柒點伍度』即『中針廿肆山盤』.

『中針廿肆山』同『䙜針廿肆山』只係『三合羅盤』有而『三元羅盤』冇.

廿肆山 旋轉
『正針廿肆山』  
『䙜針廿肆山』 順旋半卦山+『柒點伍度』.
『中針廿肆山』 逆旋半卦山-『柒點伍度』

 

青囊奥語
廿肆山分順逆

共成肆拾有捌局

伍行即在此中分

祖宗卻從陰陽出

陽從左邊氹氹轉

陰從右路轉相通

若識陰陽者

何愁大地不相逢

於巒頭論,山屬陰,水屬陽. 故山以『陰從右轉相通』之『䙜針廿肆山』相配, 水以『陽從左邊氹氹轉』之『中針廿肆山』相配.

『中針廿肆山』配『山砂』為用, 鿉行所屬

鿉行 廿肆山
『戌』『丑』『辰』『未』
『乾』『艮』『巽』『坤』
『亥』『寅』『巳』『申』
『壬』『甲』『丙』『庚』『子』『卯』『午』『酉』
『癸』『乙』『丁』『辛』

用法: 以『坐線』為『主體』, 以『山峯』為『客體』, 相配論吉凶. 分伍類.

以『主』代表『坐線』, 以『客』代表『山峯』.

客體伍行生主體伍行 食神砂, 主利科甲
客體伍行同主體伍行 旺氣砂/比和砂, 主旺丁財.
客體伍行尅主體伍行 煞氣砂, 主旺丁兩敗.
主體伍行生客體伍行 洩氣砂, 主飄蕩離.
主體伍行尅客體伍行 奴僕砂, 主旺財帛.

 

撥砂訣,『我』指『主體』
剋我煞見則禍絕

我生洩氣漸飄零

我尅奴砂爲財帛

比和爲旺丁財足

生我之星號食神

食神毓秀誕科甲

 

 

中針廿肆山伍行訣
子午卯酉太陽火

甲庚丙壬太陰火

乾坤艮巽本屬土

辰戍丑未即係金

寅申巳亥皆屬水

此是撥砂真砂訣

見砂分金配度坐

山峯須睇人盤位

吉凶禍福有分明

『中針廿肆山』用法

  1. 以地盤正針定宅坐向, 以坐盤伍行為主體. 即歌訣『我』指『主體』.
  2. 再以羅盤格肆方捌面山峯, 以人盤中針格峯, 而山峯所佔之山. 即係山峯五行氣, 屬於客, 若果生體助體則吉. 尅體洩體則凶.

風水羅盤-䙜針廿肆山盤

風水羅盤-䙜針廿肆山盤『䙜針廿肆山』全名『天䙜盤廿肆山』. 只係『三合羅盤』有而『三元羅盤』冇.

三合風水講求『格龍定向』『消砂』『纳水』. 『正針廿肆山』用蒞『立向』. 『䙜針廿肆山』用蒞『纳水』. 『中針廿肆山』用蒞『消砂』.

『䙜針廿肆山』依『正針廿肆山』全盤順旋半卦山『柒點伍度』.

『正針廿肆山』 『立向』
『䙜針廿肆山』 『纳水』
『中針廿肆山』 『消砂』『撥砂』

局中左水倒右用陽干氣『甲丙庚𡈼』. 右水倒左則用陰干氣『乙丁辛癸』

三合五行『天盤䙜針』 陽干氣
亥卯未, 乾甲丁 甲木氣
寅午戌, 艮丙辛 丙火氣
巳酉丑, 巽庚癸 庚金氣
申子辰, 坤壬乙 壬水氣

 

三合五行『天盤䙜針』 陰干氣
卯亥未, 甲乾丁 癸水氣
午寅戌, 丙艮辛 乙木氣
酉巳丑, 庚巽癸 丁火氣
子申辰, 壬坤乙 辛金氣

『納水』將『廿肆山』分辻貳分, 配『長生』『沐浴』『冠帶』『臨官』『帝旺』『衰』『病』『死』『墓』『絕』『胎』『養』拾貳神.

長生 甲木氣 丙火氣 庚金氣 壬水氣 癸水氣 乙木氣 丁火氣 辛金氣
亥乾 寅艮 巳巽 申坤 卯甲 午丙 酉庚 子壬
子壬 卯甲 午丙 酉庚 辰乙 未丁 申坤 亥乾
丑癸 辰乙 未丁 戌辛 巳巽 申坤 未丁 戌辛
寅艮 巳巽 申坤 亥乾 午丙 酉庚 午丙 酉庚
卯甲 午丙 酉庚 子壬 未丁 戌辛 巳巽 申坤
辰乙 未丁 戌辛 丑癸 申坤 亥乾 辰乙 未丁
巳巽 申坤 亥乾 寅艮 酉庚 子壬 卯甲 午丙
午丙 酉庚 子壬 卯甲 戌辛 丑癸 寅艮 巳巽
未丁 戌辛 丑癸 辰乙 亥乾 寅艮 丑癸 辰乙
申坤 亥乾 寅艮 巳巽 子壬 卯甲 子壬 卯甲
酉庚 子壬 卯甲 午丙 丑癸 辰乙 亥乾 寅艮
戌辛 丑癸 辰乙 未丁 寅艮 巳巽 戌辛 丑癸

『来水』『去水』論『吉凶』

飬生水/貪狼星 第一飬生水到堂,貪狼星照顯文章,長位兒孫多富貴,人丁昌熾性忠良. 小曲大潮官職重,水小彎環福壽長,養生流破終須絕,少年寡婦出空房.
沐浴水/文曲星 沐浴水来犯桃花,女子淫亂不由他,投河自謚随人走,血病官災破敗家,子午方來田業盡,卯酉流夾好賭奢,若還流破生神位,堕產淫聲帶鎖枷.
冠带水/文昌 冠带水来人聰慧,也主風流好賭奢,七歲兒童能作詩,文章博士萬人誇.水神流去三房苦,髫髮兒童死石不差,更損深閨嬌態女,此方停蓄乃為佳.
臨官水/武曲 臨官方位水趨塋, 䘵馬朝元吉氣新, 少年早入青雲路,賢相籌謀助聖君, 最忌此方山水去, 成才之子早歸陰, 家中少婦常哭泣, 財穀空虚徹骨貧.
帝旺/武曲 帝旺朝来聚面前, 一堂旺氣發庄田, 官高爵重威名顯, 金穀豐盈有剩錢. 最怕休囚来敝散, 石崇富貴不多年, 旺方流去根基薄, 乏食貧寒怨上天.
衰水/巨門 衰方管局巨門星, 學堂水到發聰明, 少年及第文章富, 長壽星高金穀盈, 出入威儀乖駟馬, 宴游歌舞玉壼傾, 旺極總宜來去吉, 也須灣曲更留情.
病死水/廉貞 病死二方水莫來,天門巽戶不為乖,更有科名官爵重,水若斜飛起大災,换妻毒藥刀兵禍, 軟腳瘋痰女墮胎, 必主其家遭此害,瘠癆蒸損瘦形骸
墓水/破軍 墓庫之方怕臨水, 破軍流去反為禎, 陳上揚名文武貴, 池湖開蓄富春田, 蕩然直去家資薄, 欠債終年不了人, 水來充軍千里外, 三男二女絕凋零.
絕胎水/䘵存 絕胎水到不生兒,孕死休囚絕後嗣, 縱使有生難抱養, 父子乖張夫婦離, 水大女人淫亂走, 水小私情暗會期, 此處只宜為水口, 䘵存流盡佩金魚.

 

風水羅盤-挨星盤

風水羅盤-挨星盤
風水羅盤-挨星盤

 

青奥語/挨星口訣
坤壬乙-巨門從頭出

艮丙辛-位位係破軍

巽辰亥-盡係武曲位

甲癸申-貪狼壹路行

後人依前賢奥義所推

廿肆挨星盤
上元宮位

坎宮壬山巨門二

子山禄存三

癸山貪狼一

坤宮未山禄存三

坤山巨門二

申山貪狼一

震宫甲山貪狼一

卯山禄存三

乙山巨門二

每宮皆齊集上元挨星

中元宮位

巽宮辰巽兩山得武曲六

巳山得文曲四

中宮暗藏五

朝宮戌乾兩山得文曲四

亥山得武曲六

而乾巽暗藏廉貞五

無論四運抑六運

廉貞必到巽或乾

故中元宮位每宮皆暗藏中元之挨星

下元宮位

兑宮庚山左輔八

酉山右弼九

辛山破軍七

艮宮丑山右弼九

艮山破軍七

寅山左輔八

離宮丙山破軍七

午山右弼九

丁山左輔八

每宮皆齊集下元挨星

 

 

挨星盤 廿四山
祿 『子』
『癸』
『丑』
『艮』
『寅』
『甲』
祿 『卯』
『乙』
『辰』
『巽』
『巳』
『丙』
『午』
『丁』
祿 『未』
『坤』
『申』
『庚』
『酉』
『辛』
『戌』
『乾』
『亥』
『壬』

 

風水羅盤-廿捌宿天星分金盤

風水羅盤-廿捌宿天星分金盤
風水羅盤-廿捌宿天星分金盤
風水羅盤-廿捌宿天星分金盤
風水羅盤-廿捌宿天星分金盤

『廿捌星宿』jaa_baat_sing_suk位於黃道南北廿捌恒星星座.貳拾捌宿毎星『叁漢字』,首字『星名』,次字『伍行』,尾字『动物』.羅盤寫『星宿』首字.

『廿捌星宿』亦名『經星』-計『日月金木水火土星』.

『廿捌星宿』亦名『緯星』將『廿捌星宿』分為肆分, 每分柒星宿, 呌『柒政肆餘』.

『廿捌星宿』隸屬於『星宿』『日月』及『伍行』『金木水火土』 .

『廿捌星宿』以『度』論吉凶. 网络記述分度小數有誤. 冇法合『叁百陸拾伍』度. 『宿』音近『獸』.重新修正如下表:

廿捌星宿 星名 分度 分度 伍行 星宿
角木蛟 『角』gok3 『拾貳太』sap_ji_taai 12.75
亢金龍 『亢』kong3 『玖太』gau_taai 9.75
氐土貉 『氐』dai1 『拾陸少』sap_luk_siu 16.25
房日兔 『房』fong4 『伍太』ng_taai 5.75
心月狐 『心』sam1 『陸』luk 6
尾火虎 『尾』mei5 『拾捌』sap_baat 18
箕水豹 『箕』gei1 『玖半』gau_bun 9.5
斗木蟹 『斗』dau2 『廿貳太』jaa_ji_taai 22.75
牛金牛 『牛』ngau4 『柒』cat 7
女土蝠 『女』neoi5 『拾壹』sap_ji 11
虚日鼠 『虚』heoi1 『玖少』gau_siu 9.25
危月燕 『危』ngai4 『拾陸』sap_luk 16
室火豬 『室』sat1 『拾捌少』sap_baat_siu 18.25
壁水㺄 『壁』bik1 『玖太』gau_taai 9.75
奎木狼 『奎』fui1 『拾捌』sap_baat 18
婁金狗 『婁』lau4 『拾貳太』sap_ji_taai 12.75
胃土雉 『胃』wai6 『拾伍少』sap_ng_siu 15.25
昴日雞 『昴』maau5 『拾壹』sap_jat 11
畢月鳥 『畢』bat1 『拾陸半』sap_luk_bun 16.5
觜火猴 『觜』zeoi2 『零半』leng_bun 0.5
参水猿 『参』saam1 『玖半』gau_bun 9.5
井木犴 『井』zeng2 『卅少』saa_siu 30.25
鬼金羊 『鬼』gwai2 『貳少』ji_siu 2.25
柳土獐 『柳』lau5 『拾叁半』sap_saam_bun 13.5
星日馬 『星』sing1 『陸太』luk_taai 6.75
張月鹿 『張』zoeng1 『拾柒太』sap_cat_taai 17.75
翼火蛇 『翼』jik6 『廿少』jaa_siu 20.25
軫水蚓 『軫』can2 『拾捌太』sap_baat_taai 18.75

 

廿捌星宿 分度 位置角 伍行 星宿
虚日鼠 『玖少』9.25 4.625f
女土蝠 『拾壹』11 14.75f
牛金牛 『柒』7 23.75f
斗木蟹 『廿貳太』22.75 38.625f
箕水豹 『玖半』9.5 54.75f
尾火虎 『拾捌』18 68.5f
心月狐 『陸』6 80.5f
房日兔 『伍太』5.75 86.375f
氐土貉 『拾陸少』16.25 97.375
亢金龍 『玖太』9.75 110.375
角木蛟 『拾貳太』12.75 121.625
軫水蚓 『拾捌太』18.75 137.375
翼火蛇 『廿少』20.25 156.875
張月鹿 『拾柒太』17.75 175.875
星日馬 『陸太』6.75 188.125
柳土獐 『拾叁半』13.5 198.25
鬼金羊 『貳少』2.25 206.125
井木犴 『卅少』30.25 222.375
参水猿 『玖半』9.5 242.25
觜火猴 『零半』0.5 247.25
畢月鳥 『拾陸半』16.5 255.75
昴日雞 『拾壹』11 269.5
胃土雉 『拾伍少』15.25 282.625
婁金狗 『拾貳太』12.75 296.625
奎木狼 『拾捌』18 312
壁水㺄 『玖太』9.75 325.875
室火豬 『拾捌少』18.25 339.875
危月燕 『拾陸』16 357

 

『少半太』siu2_bun3_taai3
『少』siu2 肆分之壹 0.25
『半』bun3 貳分之壹 0.5
『太』taai3 肆分之叁 0.75

 

廿捌星宿 以度論吉凶
角木蛟 壹貳度俱吉, 叁度凶,肆度關煞,伍陸度俱吉,柒度差錯,捌至拾度吉,太度平.
亢金龍 壹度凶,貳度小空,叁度平,肆度關煞,伍陸度平,柒度凶,捌度吉,玖度平, 太度凶
氐土貉 壹度大空,貳度關煞,叁肆度吉,伍度平,陸度凶,柒度關煞,捌度吉,玖度小空,拾度拾壹度平,拾貳度吉,拾叁度拾肆度凶,拾伍度平,拾陸度差錯.少度
房日兔 壹貳叁度吉,肆度關煞,伍度吉,陸度平.
心月狐 壹度吉,貳度小空,叁度凶,肆度關煞,伍度平,陸度平.
尾火虎 壹貳度凶,叁度大空,肆伍度吉,陸柒度平,捌度凶,玖度吉,拾度小空,拾壹度關煞,拾貳至拾伍平,拾陸度凶,拾柒度差錯關煞,拾捌度凶.
箕水豹 壹貳度吉,叁肆度平,伍度凶,陸度小空關煞,柒度凶,捌度平,玖度凶,半度平
斗木蟹 壹貳叁度吉,肆度大空,伍度平,陸度吉,柒度關煞。捌度平,玖度吉,拾度拾壹度小空,拾貳拾叁度平,拾肆度拾伍度吉,拾陸度凶,拾柒度差錯,拾捌度拾玖度吉,貳拾度貳拾壹度凶,貳拾貳度貳拾叁度平,太度吉.
牛金牛 壹度小空,貳度吉,叁度關煞,肆度凶,伍度吉,陸度平,柒度吉.
女土蝠 壹度吉,貳度關煞,叁度平,肆度凶,伍度平,陸度凶,柒捌度吉,玖度小空,拾度平,拾壹度凶.
虚日鼠 壹度凶,貳度關煞,叁度凶,肆伍陸度吉,柒度吉,捌度關煞,玖度凶,少度北針差錯.
危月燕 壹度北針差錯,貳叁度吉,肆度關煞,伍度小空,陸度吉,柒捌度平,玖度凶,拾度拾壹度吉,拾貳,拾叁度大空,拾肆度凶,拾伍度正,拾陸度關煞.
室火豬 壹貳叁度吉,肆度小空,伍度關煞,陸度吉,柒捌度凶,玖度吉,拾度凶,拾壹度關煞,拾貳度差錯,拾叁度拾肆度吉,拾伍度凶,拾陸度吉,拾柒拾捌度平,少度吉
壁水㺄 壹貳度吉,叁度小空,肆度平,伍度關煞,陸度凶,柒捌度吉,玖度凶, 太度吉
奎木狼 壹貳度大空,叁度平,肆度吉,伍度凶,陸度平,柒度至玖度吉,拾度小空,拾壹度吉,拾貳度平,拾叁度平,拾肆度凶。拾伍度拾陸度吉,拾柒度拾捌差錯
婁金狗 壹度平,貳度凶,叁度關煞,肆至柒度吉,捌度小空,玖度拾度平,拾壹度拾貳度凶, 太度吉,
胃土雉 壹貳度凶,叁度關煞,肆度大空,伍陸柒度平,捌玖度吉,拾度凶,拾壹度小空,拾貳度吉,拾叁度平,拾肆度拾伍度平,少度關然.
昴日雞 壹貳度平,叁肆度吉,伍陸度關煞,柒捌度吉,拾度吉空,拾壹度小空,半度
畢月鳥 壹至肆度吉,伍度凶,陸度關煞,柒度吉,捌度吉,玖度拾度凶.拾壹度吉,拾貳度關煞,拾叁度凶,拾肆度小空,拾伍度小空,拾陸度平,半度吉
觜火猴 半度吉
参水猿 壹度平,貳度關煞,叁度平,肆度差錯,伍度凶,陸度吉,柒度關煞,捌度玖度吉, 半度吉.
井木犴 壹度小空,貳至肆度凶,伍度平,陸度吉,柒度凶,捌度大空,玖至拾度平,拾壹度關煞,拾貳度凶,拾叁度吉,拾肆度平,拾伍度小空,拾陸拾柒度吉,拾捌度平,拾玖度吉,貳拾度平,貳拾壹度關煞,貳拾貳度差錯,貳拾叁度凶,貳拾肆至貳拾陸度吉,貳拾柒度關煞,貳拾捌夜平,貳拾玖叁拾度小空,叁拾壹度凶,少度平
鬼金羊 壹度凶,貳度吉,少度吉
柳土獐 壹度吉,貳度關煞,叁度凶,肆度大空,伍至柒度吉,捌度關煞,玖度凶,拾度平,拾壹度小空,拾貳拾叁度吉,半度吉
星日馬 壹度凶,貳度平,叁肆度吉,陸度差錯, 太度平
張月鹿 壹度貳度吉,叁度南針差錯,肆度吉,伍度凶,陸度吉,柒度小空關煞,捌玖度吉,拾度凶,拾壹度至拾叁度吉,拾肆度凶,拾伍度大空,拾陸度拾柒度平,太度關熊
翼火蛇 壹貳度吉,叁度凶,肆度吉,伍度凶,陸度關煞,柒度平,捌度玖度凶,拾度拾壹度吉,拾貳度平,拾叁,拾肆度差錯,拾伍度拾陸度吉,拾柒度關煞,拾捌度吉,拾玖度平,貳拾度吉,少度凶
軫水蚓 壹度貳度吉,叁度凶,肆度吉,伍度平,陸度吉,柒至玖度平,拾拾壹度關煞,拾貳度吉,拾叁度凶,拾肆度平,拾伍度吉,拾陸拾柒度關煞,拾捌度犯小空亡,太度凶

 

東方蒼龍柒宿 『角木蛟』『亢金龍』『氐土貉』『房日兔』『心月狐』『尾火虎』『箕水豹』
南方朱雀柒宿 『井木犴』『鬼金羊』『柳土獐』『星日馬』『張月鹿』『翼火蛇』『軫水蚓』
西方白虎柒宿 『奎木狼』『婁金狗』『胃土雉』『昴日雞』『畢月鳥』『嘴觜火猴』『参水猿』
北方玄武柒宿 『斗木蟹』『牛金牛』『女土蝠』『虚日鼠』『危月燕』『室火豬』『壁水㺄』

 

廿捌星宿 日月星宿 伍行
『房日兔』『虚日鼠』『昴日雞』『星日馬』
『張月鹿』『心月狐』『危月燕』『畢月鳥』
『亢金龍』『牛金牛』『鬼金羊』『婁金狗』
『角木蛟』『奎木狼』『井木犴』『斗木蟹』
『軫水蚓』『壁水㺄』『箕水豹』『参水猿』
『翼火蛇』『室火豬』『觜火猴』『尾火虎』
『氐土貉』『女土蝠』『胃土雉』『柳土獐』

 

 

 

佛陀

佛陀

『佛陀』『如來』係指『釋迦牟尼』, 儒略歴前伍百年『釋迦牟尼』生為『藍毗尼』國王子.其王族『釋迦』族,生為王子可繼承王權, 但冇繼承王位. 係廿玖歲離開國都『修行』. 經陸年『苦行』, 行到河邊大樹下開悟得道. 『釋迦牟尼』『覺醒』成『佛陀』.後世將悟道地呌『菩提伽耶』.大樹呌『菩提樹』.

『釋迦牟尼』最初係『鹿野苑』傳授佛法時只有伍位弟子,後蒞弟子增多畀銀建造祈園. 於『拘屍那羅』『娑羅雙樹』下『入滅』享年捌拾.

相傳『佛陀』係金人外形金光閃閃『金身』『青目』『攣毛』『獅相』,如果『金身』係『金髮』影襯而蒞. 『青目』即『藍眼』.『獅相』係指『深輪廓』.咁『金髮』『藍眼』『攣毛』『深輪廓』外形講明『釋迦牟尼』擁有歐州血統.假設因血統而導至『王位』爭奪失敗.所以佛法提昌衆生平等.

『藍毗尼』今『尼泊爾』國.

 

風水羅盤-三合廿四山陰陽盤

風水羅盤-三合廿四山陰陽盤 風水羅盤-三合廿四山陰陽盤『三合廿四山陰陽盤』由『先天卦』配『後天卦』演进而蒞.再配納甲壹氣.『三合廿四山陰陽盤』同『三元廿四山陰陽盤』排列相同, 卦山陰陽有别.

廿四山jaa_sei_saan 三元saam_jyun 三合Saam_Hap
『子』zi2 『陽』
『癸』gwai 『陽』
『丑』cau
『艮』gan 『陽』
『寅』jan 『陽』 『陽』
『甲』gaap 『陽』 『陽』
『卯』maau
『乙』jyut 『陽』
『辰』san4 『陽』
『巽』seon 『陽』
『巳』zi6 『陽』
『丙』bing 『陽』
『午』ng 『陽』
『丁』ding
『未』mei
『坤』kwan 『陽』 『陽』
『申』san1_ 『陽』 『陽』
『庚』gang 『陽』
『酉』jau
『辛』san1
『戌』seot 『陽』
『乾』kin 『陽』 『陽』
『亥』hoi 『陽』
『壬』jam 『陽』 『陽』

 

三元廿四山陰陽盤 saam_jyun_jaa_sei_saan_Jam_Joeng
三合廿四山陰陽盤 Saam_Hap_Jaa_Sei_Saan_Jam_Joeng

 

陰陽所屬 内盤金色底 内盤黑色底 内盤白色底
『陰』屬 『金』底『黑』字 『黑』底『金』字 黑底白字
『陽』屬 『紅』底『金』字 『金』底『紅』字 白底黑字

 

風水羅盤-先天八卦

風水羅盤-先天八卦『八卦』出自『易經』分『先天八卦』同『後天八卦』.『先天八卦』即『伏羲八卦』『乾·兌·離·震·巽·坎·艮·坤』.『後天八卦』即『文王八卦』『乾·坎·艮·震·巽·離·坤·兌』.分別在於排列次序.『三元盤』為『後天八卦』.由『兩短』或『一長』橫綫組成. 『⚋』為『陰』.『⚊』為『陽』.共三組表示八個數字即『八卦』.與二進制概念一致.當年『易經』落入德國哲學家『賴布列茨』手.發展出整套二進制運算『加减乘除』.

八卦baat_gwaa 卦名
先天八卦sin_tin_baat_gwaa 乾·兌·離·震·巽·坎·艮·坤
後天八卦 hau_tin_baat_gwaa 乾·坎·艮·震·巽·離·坤·兌

 

『八卦』baat_gwaa『卦名』 『八卦』baat_gwaa『符號』
『離』lei
『巽』seon
『震』zan
『艮』gan
『坤』kwan
『兌』deoi
『乾』kin
『坎』ham

 

先天八卦 後天八卦 每卦三山
『乾』卦『☰』 『離』宮『☲』 丙午丁
『兌』卦『☱』 『巽』宮『☴』 辰巽巳
『離』卦『☲』 『震』宮『☳』 甲卯乙
『震』卦『☳』 『艮』宮『☶』 醜艮寅
『巽』卦『☴』 『坤』宮『☷』 未坤申
『坎』卦『☵』 『兌』宮『☱』 庚酉辛
『艮』卦『☶』 『乾』宮『☰』 戌乾亥
『坤』卦『☷』 『坎』宮『☵』 壬子癸

風水羅盤-平分陸拾龍分度盤

風水羅盤-平分陸拾龍分度盤『平分陸拾龍』同『透地陸拾龍』排列相近似. 故又叫『平分陸拾透地龍盤』.

『平分分度』有『正度』『叁柒分度』『伍伍分度』

  1. 『正度』-每柱『陽氣』或『陰氣』純正着
  2. 『叁柒分度』-每柱『陽氣』佔叁分 『陰氣』 佔柒分. 每柱『陽氣』佔柒分 『陰氣』 佔叁分.
  3. 『伍伍分度』-每柱所藏廿肆山各佔伍分
『平分分度』 『陽』 『陰』
1.           正度 正陽氣 正陰氣
2.           叁柒分度 『柒陽叁陰』

『柒分叁分都係陰』

『柒陰叁陽』

『柒分叁分都係陽』

3.           伍伍分度 伍陽伍陰 伍陰伍陽

 

『陸拾甲子』 『正陽氣』純陽
丙子 正𡈼氣
庚子 正子氣
丁丑 正癸氣
壬寅 正寅氣
己卯 正甲氣
庚辰 正乙氣
甲辰 正辰氣
丙午 正午氣
甲申 正坤氣
戊申 正申氣
庚戌 正戌氣
丁亥 正乾氣

 

『陸拾甲子』 『正陰氣』純陰
辛亥 正亥
辛丑 正丑
戊寅 正艮
癸卯 正卯
辛巳 正巽
乙巳 正巳
壬午 正丙
癸未 正丁
丁未 正未
乙酉 正庚
己酉 正酉
丙戌 正辛

 

『陸拾甲子』 『柒陽叁陰』

每柱『陽氣』佔柒分 『陰氣』 佔叁分.

甲子 柒分壬带叁分亥
丙辰 柒分辰带叁分巽
戊午 柒分午带叁分丁
壬申 柒分坤带叁分未
庚申 柒分申带叁分庚
戊辰 柒分乙带叁分卯

 

『陸拾甲子』 『柒陰叁陽』

每柱『陽氣』佔叁分 『陰氣』 佔柒分.

癸亥 柒分亥带叁分壬
乙卯 柒分卯带叁分乙
己未 柒分未带叁分坤
癸酉 柒分庚带叁分申
辛未 柒分丁带叁分午
己巳 柒分巽带叁分辰

 

『陸拾甲子』 『柒分叁分都係陽』
壬戌 柒分戌带叁分乾
乙亥 柒分乾带叁分戌
壬子 柒分子带叁分癸
乙丑 柒分癸带叁分子
甲寅 柒分寅带叁分甲
丁卯 柒分甲带叁分寅

 

『陸拾甲子』 『柒分叁分都係陰』
辛酉 柒分酉带叁分辛
甲戌 柒分辛带叁分酉
癸丑 柒分丑带叁分艮
丙寅 柒分艮带叁分丑
丁巳 柒分巳带叁分丙
庚午 柒分丙带叁分巳

 

『陸拾甲子』 『伍伍分度』
甲午 伍分午兼伍分丙
癸巳 伍分巳兼伍分巽
壬辰 伍分辰兼伍分乙
辛卯 伍分卯兼伍分甲
庚寅 伍分寅兼伍分艮
己丑 伍分丑兼伍分癸
戊子 伍分子兼伍分壬
己亥 伍分亥兼伍分乾
戊戌 伍分戌兼伍分辛
丁酉 伍分酉兼伍分庚
丙申 伍分申兼伍分坤
乙未 伍分未兼伍分丁

 

『廿四卦山』 『透地陸拾龍』『陸拾甲子』 『平分陸拾龍分度盤』

Ping_Fan_Luk_Sap_Lung_Fan_Dou

『壬山』

『子山』

『甲子』 『柒壬叁亥』
『丙子』 『正壬』
『戊子』 『伍子伍壬』
『庚子』 『正子』
『壬子』 『柒子叁癸』
『癸山』

『丑山』

『乙丑』 『柒癸叁子』
『丁丑』 『正癸』
『己丑』 『伍丑伍癸』
『辛丑』 『正丑』
『癸丑』 『柒丑叁艮』
『艮山』

『寅山』

『丙寅』 『柒艮叁丑』
『戊寅』 『正艮』
『庚寅』 『伍寅伍艮』
『壬寅』 『正寅』
『甲寅』 『柒寅叁甲』
『甲山』

『卯山』

『丁卯』 『柒甲叁寅』
『己卯』 『正甲』
『辛卯』 『伍卯伍甲』
『癸卯』 『正卯』
『乙卯』 『柒卯叁乙』
『乙山』

『辰山』

『戊辰』 『柒乙叁卯』
『庚辰』 『正乙』
『壬辰』 『伍辰伍乙』
『甲辰』 『正辰』
『丙辰』 『柒辰叁巽』
『巽山』

『巳山』

『己巳』 『柒巽叁辰』
『辛巳』 『正巽』
『癸巳』 『伍巳伍巽』
『乙巳』 『正巳』
『丁巳』 『柒巳叁丙』
『丙山』

『午山』

『庚午』 『柒丙叁巳』
『壬午』 『正丙』
『甲午』 『伍午伍丙』
『丙午』 『正午』
『戊午』 『柒午叁丁』
『丁山』

『未山』

『辛未』 『柒丁叁午』
『癸未』 『正丁』
『乙未』 『伍未伍丁』
『丁未』 『正未』
『己未』 『柒未叁坤』
『坤山』

『申山』

『壬申』 『柒坤叁未』
『甲申』 『正坤』
『丙申』 『伍申伍坤』
『戊申』 『正申』
『庚申』 『柒申叁庚』
『庚山』

『酉山』

『癸酉』 『柒庚叁申』
『乙酉』 『正庚』
『丁酉』 『伍酉伍庚』
『己酉』 『正酉』
『辛酉』 『柒酉叁辛』
『辛山』

『戌山』

『甲戌』 『柒辛叁酉』
『丙戌』 『正辛』
『戊戌』 『伍戌伍辛』
『庚戌』 『正戌』
『壬戌』 『柒戌叁乾』
『乾山』

『亥山』

『乙亥』 『柒乾叁戌』
『丁亥』 『正乾』
『己亥』 『伍亥伍乾』
『辛亥』 『正亥』
『癸亥』 『柒亥叁壬』

 

漢數字NUM 簡寫 阿拉伯數字
正zing    
零leng 0
壹jat 1
貳ji 2
叁saam 3
肆sei 4
伍ng 5
陸luk 6
柒cat 7
捌baat 8
玖gau 9
拾sap 10
廿jaa 廿 20
卅saa 30
卌se 40
圩/墟 伍拾 50
陸拾 60
柒拾 70
捌拾 80
玖拾 90
佰baak 100
皕bik 貳佰 200
叁佰𤾩    

 

風水羅盤-透地陸拾龍盤

風水羅盤-透地陸拾龍盤『穿山』同『透地』互為呼應,『穿山』穿定蒞龍所屬『干支』,又呌『地紀』 .

『透地』導龍氣入穴中棺木『干支』, 又呌『天紀』.

『透地陆拾龍』同『廿四卦山』, 每『两卦山』對『五龍』

『廿四卦山』 『透地陆拾龍』Tau_Dei_Luk_Sap_Lung
『壬山』『子山』 『甲子』『丙子』『戊子』『庚子』『壬子』
『癸山』『丑山』 『乙丑』『丁丑』『己丑』『辛丑』『丑丑』
『艮山』『寅山』 『丙寅』『戊寅』『庚寅』『壬寅』『甲寅』
『甲山』『卯山』 『丁卯』『己卯』『辛卯』『癸卯』『乙卯』
『乙山』『辰山』 『戊辰』『庚辰』『壬辰』『甲辰』『丙辰』
『巽山』『巳山』 『己巳』『辛巳』『癸巳』『乙巳』『丁巳』
『丙山』『午山』 『庚午』『壬午』『甲午』『丙午』『戊午』
『丁山』『未山』 『辛未』『癸未』『乙未』『丁未』『己未』
『坤山』『申山』 『壬申』『甲申』『丙申』『戊申』『庚申』
『庚山』『酉山』 『癸酉』『乙酉』『丁酉』『己酉』『辛酉』
『辛山』『戌山』 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
『乾山』『亥山』 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』

 

風水羅盤-納音伍行盤

風水羅盤-納音伍行盤『伍行』指『金木水火土』. 廿四卦山每卦對『金水火土木』

伍行ng_hang
金gam1
木muk6
水seoi2
火fo2
土tou2

 

陆拾甲子納音歌

甲子乙丑海中金 丙寅丁卯爐中火 戊辰己巳大林木 庚午辛未路傍土 壬申癸酉剑鋒金
甲戌乙亥山頭火 丙子丁丑澗下水 戊寅己卯城頭土 庚辰辛巳白蠟金 壬午癸未楊柳木
甲申乙酉泉中水 丙戌丁亥屋上土 戊子己丑霹歷火 庚寅辛卯松柏木 壬辰癸巳長流水
甲午乙未沙中金 丙申丁酉山下火 戊戌己亥平地木 庚子辛丑壁上土 壬寅癸卯金箔金
甲辰乙巳覆燈火 丙午丁未天河水 戊申己酉大驛土 庚戌辛亥釵釧金 壬子癸丑桑柘木
甲寅乙卯大溪水 丙辰丁巳沙中土 戊午己未天上火 庚申辛酉石榴木 壬戌癸亥大海冰

 

風水羅盤-穿山柒拾貳龍盤

風水羅盤-穿山柒拾貳龍盤『穿山』穿定蒞龍所屬干支, 干支又名為『地紀』. 論蒞龍吉凶.  『廿四卦山』 『子丑寅卯辰巳午未申酉戌亥』名對『叁龍』. 『四維』『乾坤艮巽』同『八干』『甲庚丙乙辛丁癸』缺『壹龍』.

廿四卦山 穿山柒拾貳龍 cyun_saan_cat_sap_ji_lung
子山 『甲子』『丙子』『戊子』『庚子』『壬子』
癸山  
丑山 『乙丑』『丁丑』『己丑』『辛丑』『癸丑』
艮山  
寅山 『丙寅』『戊寅』『庚寅』『壬寅』『甲寅』
甲山  
卯山 『丁卯』『己卯』『辛卯』『癸卯』『乙卯』
乙山  
辰山 『戊辰』『庚辰』『壬辰』『甲辰』『丙辰』
巽山  
巳山 『己巳』『辛巳』『癸巳』『乙巳』『丁巳』
丙山  
午山 『庚午』『𡈼午』『甲午』『丙午』『戊午』
丁山  
未山 『辛未』『癸未』『乙未』『丁未』『己未』
坤山  
申山 『壬申』『甲申』『丙申』『戊申』『庚申』
庚山  
酉山 『癸酉』『乙酉』『丁酉』『己酉』『辛酉』
辛山  
戌山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
乾山  
亥山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
壬山  

 

風水羅盤-百貳龍分金地盤正針

風水羅盤-百貳龍分金地盤正針
風水羅盤-百貳龍分金地盤正針

『百貳龍分金』盤, 廿四卦山每卦分五格, 以『干支』排列. 『百貳龍分金』係三合派學問. 用係立坐定向.『百貳龍分金』分『正針』同『縫針』『中針』, 三者排列壹致, 『縫針』令『百貳龍分金』順轉半宮.

『百貳龍分金地盤正針』zing3_zam1 廿四卦山
『百貳龍分金天盤縫針』fung4_zam1 廿四卦山順轉半宮
『百貳龍分金中針』 廿四卦山逆轉半宮

 

廿四卦山 百貳龍分金『吉利』 百貳龍分金『凶惡』
甲山 『丙寅』『庚寅』 『甲寅』『戊寅』『壬寅』
卯山 『丁卯』『辛卯』 『乙卯』『己卯』『癸卯』
乙山 『丁卯』『辛卯』 『乙卯』『己卯』『癸卯』
辰山 『丙辰』『庚辰』 『甲辰』『戊辰』『壬辰』
巽山 『丙辰』『庚辰』 『甲辰』『戊辰』『壬辰』
巳山 『丁巳』『辛巳』 『乙巳』『己巳』『癸巳』
丙山 『丁巳』『辛巳』 『乙巳』『己巳』『癸巳』
午山 『丙午』『庚午』 『甲午』『戊午』『壬午』
丁山 『丙午』『庚午』 『甲午』『戊午』『壬午』
未山 『丁未』『辛未』 『乙未』『己未』『癸未』
坤山 『丁未』『辛未』 『乙未』『己未』『癸未』
申山 『丙申』『庚申』 『甲申』『戌申』『壬申』
庚山 『丙申』『庚申』 『甲申』『戌申』『壬申』
酉山 『丁酉』『辛酉』 『乙酉』『己酉』『癸酉』
辛山 『丁酉』『辛酉』 『乙酉』『己酉』『癸酉』
戌山 『丙戌』『庚戌』 『甲戌』『戊戌』『壬戌』
乾山 『丙戌』『庚戌』 『甲戌』『戊戌』『壬戌』
亥山 『丁亥』『辛亥』 『乙亥』『己亥』『癸亥』
壬山 『丁亥』『辛亥』 『乙亥』『己亥』『癸亥』
子山 『丙子』『庚子』 『甲子』『戊子』『壬子』
癸山 『丙子』『庚子』 『甲子』『戊子』『壬子』
醜山 『丁醜』『辛醜』 『乙丑』『己醜』『癸醜』
艮山 『丁醜』『辛醜』 『乙丑』『己醜』『癸醜』
寅山 『丙寅』『庚寅』 『甲寅』『戊寅』『壬寅』

 

廿四卦山 百貳龍分金Baak_Ji_Lung_Fan_Gam
甲山 『甲寅』『丙寅』『戊寅』『庚寅』『壬寅』
卯山 『乙卯』『丁卯』『己卯』『辛卯』『癸卯』
乙山 『乙卯』『丁卯』『己卯』『辛卯』『癸卯』
辰山 『甲辰』『丙辰』『戊辰』『庚辰』『壬辰』
巽山 『甲辰』『丙辰』『戊辰』『庚辰』『壬辰』
巳山 『乙巳』『丁巳』『己巳』『辛巳』『癸巳』
丙山 『乙巳』『丁巳』『己巳』『辛巳』『癸巳』
午山 『甲午』『丙午』『戊午』『庚午』『壬午』
丁山 『甲午』『丙午』『戊午』『庚午』『壬午』
未山 『乙未』『丁未』『己未』『辛未』『癸未』
坤山 『乙未』『丁未』『己未』『辛未』『癸未』
申山 『甲申』『丙申』『戌申』『庚申』『壬申』
庚山 『甲申』『丙申』『戌申』『庚申』『壬申』
酉山 『乙酉』『丁酉』『己酉』『辛酉』『癸酉』
辛山 『乙酉』『丁酉』『己酉』『辛酉』『癸酉』
戌山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
乾山 『甲戌』『丙戌』『戊戌』『庚戌』『壬戌』
亥山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
壬山 『乙亥』『丁亥』『己亥』『辛亥』『癸亥』
子山 『甲子』『丙子』『戊子』『庚子』『壬子』
癸山 『甲子』『丙子』『戊子』『庚子』『壬子』
醜山 『乙丑』『丁醜』『己醜』『辛醜』『癸醜』
艮山 『乙丑』『丁醜』『己醜』『辛醜』『癸醜』
寅山 『甲寅』『丙寅』『戊寅』『庚寅』『壬寅』

 

三水佬睇走馬燈-陸續有蒞

三水佬睇走馬燈-陸續有蒞
三水佬睇走馬燈-陸續有蒞
三水佬睇走馬燈-陸續有蒞
三水佬睇走馬燈-陸續有蒞
三水佬睇走馬燈-陸續有蒞
三水佬睇走馬燈-陸續有蒞

『三水佬』於正月初揸牛車到省城由『四牌樓』行至『雙門底』, 通街 『騎樓』『榕樹』高挂『走馬燈』. 『走馬燈』自轉行極都有.係『三水佬』口中呌出『陸續有蒞』.『走馬燈』冇睇過唔緊要, 係你魄散離魂之際睇睇自已人生『走馬燈』.

『蒞』音近『嚟』有『蒞臨』『蒞職』『蒞任』

三水佬睇走馬燈-陸續有蒞

 

躝癱

躝癱『躝』指『躝屍』,『癱』指『癱瘓』.『躝癱』係前邊加『死』字即『死躝癱』, 所以『躝癱』有可能嚟自『蘭彈』轉音.『蘭彈』出自『唐國』『蘇頲』『兔子死蘭彈』.

『蘭彈』轉音『躝癱』. 两者皆指『死而柔』.

『死』屍身僵硬『死而僵』, 而『躝癱』掉轉嚟『死而柔』.

冚家鏟

冚家鏟『冚家鏟』源於『冚家斬』『冚家鍘』,『明国』開國皇帝明太祖朱元璋,壹杀『冚家杀』即係『誅九族』『上叁族』『下叁族』『橫叁族』, 而『妻妾』則扁作官婢. 且係『腰斬』死前痛苦萬分.

『上叁族』指『老竇』『啊爺』『太公』

『下叁族』指『仔』『孫』『室』

『橫叁族』指 『兄弟』『堂兄弟』『表兄弟』

『鏟』同『剷』

玄壇兄弟『趙玄鬆』『趙玄唱』

玄壇兄弟『趙玄鬆』『趙玄唱』『趙公明』受封『玄壇』神祗, 所以叫佢『趙玄壇』,佢有两個細佬『趙玄鬆』『趙玄唱』. 借其大佬個朵也文也武.

『趙玄鬆』專呃後生女隻猪後『趯路』,嚼完鬆人即『嚼完鬆』

『趙玄唱』仲衰,嚼完仲要通街唱『嚼完唱』

玄壇兄弟-『嚼完鬆』『嚼完唱』

 

牙簽大少

牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟
牙簽大少撩完丟

『牙簽』撩牙撩完就丟.

『牙簽大少』暗指『後生女』畀大少『扑鑊金』呃咗隻猪兼『嚼完鬆』.

牙簽大少-撩完丟

 

冇上装曬太阳

冇上装曬太阳

女人『冇上裝』指『冇露屄』, 女人『著下裝』指『屄曬唔到』. 『女人冇上裝曬太陽

』指『冇屄曬』

男人『冇上裝』指『冇露㞗』『冇露𡳞』, 男人『著下裝』指『㞗曬唔親』.『男人冇上裝曬太陽』指『冇㞗曬』或『冇𡳞曬』.

『冇屄曬』同『冇𡳞曬』暗指『輸幹輸淨』

女人冇上裝曬太陽-冇屄曬
男人冇上裝曬太陽-冇㞗曬/冇𡳞曬

『𡳞』音近『撚』

『𨳊』音近『鳩』

WordPress之部份漢字唔得存檔

Wordpress之部份漢字唔得存檔近嚟係Wordpress寫『𨳒𨳊𨶙𨳍閪』『𡳞』漢字唔得存檔,直接對MYSQL寫漢字彈『Warning: #1366 Incorrect string value: ‘…’ for column ‘post_content’ at row 1』.表明係MYSQL編碼關係, 因漢字皆轉為UTF8編碼,多數漢字占3Byte,細心睇『𨳒𨳊𨶙𨳍閪』『𡳞』占4Byte .所以MYSQL先有utf8mb4編碼嚟存檔4Byte特殊字符.

早先Wordpress生成MYSQL時係utf8後嚟轉咗utf8mb4. 所以早先Wordpress漢字唔得存檔.睇wp-config.php文檔.

解决方法唯有將uft8_unicode_ci改成utf8mb4_unicode_ci

 

伺服器utf8mb4

  1. 登入phpMydamin
  2. 『一般設定』General Settings
  3. 改『伺服器連線編碼與排序』Server connection collation揀 utf8mb4_unicode_ci

 

資料表utf8mb4

  1. 登入phpMydamin
  2. 『伺服器』server->『資料庫』Database
  3. 撳『結構』Structure
  4. 勾『全選』Check
  5. 撳『操作』Operations
  6. 改『編碼與排序』Collation揀 utf8mb4_unicode_ci
  7. 勾『更改所有資料表編碼與排序』Change all tables collations
  8. 勾『更改所有資料表欄位編碼與排序』Change all tables collations collations
  9. 撳『執行』GO

 

早先wp-config.php 後嚟wp-config.php
define(‘DB_CHARSET’, ‘utf8’); define(‘DB_CHARSET’, ‘utf8mb4’);
define(‘DB_COLLATE’, ”); define(‘DB_CHARSET’, ‘utf8mb4_unicode_ci’);

 

Warning: #1366 Incorrect string value: ‘\xF0\xA8\xB3\x92\xF0\xA8…’ for column ‘post_content’ at row 1
Warning: #1366 Incorrect string value: ‘\xF0\xA8\xB3\x92\xF0\xA8…’ for column ‘post_title’ at row 1

 

太監騎駱駝-冇撚得頂

太監騎駱駝-無撚得頂
太監騎駱駝-無撚得頂

『太監』冇 『𡳞』音近『撚』.

『駱駝』背脊有『駝峰』, 坐係『峰過峰』轆『𡳞』會頂住『駝峰』.

『太監騎駱駝』梗係冇『𡳞』頂住『駝峰』,『冇𡳞得頂』壹解『頂唔住』貳解『冇得頂』.

太監騎駱駝-冇𡳞得頂

 

 

 

 

 

 

 

 

冇咗隻猪

冇咗隻猪

草『心抱』三朝回門點解『冇咗隻猪』?『心抱』係『豬女』要拎隻『乳猪』翻外家,三朝回門『冇咗隻猪』 証明『心抱』唔係『豬女』.

『喫咗隻猪』指後生女『隻猪』畀你喫咗.

『回門猪』指『喫咗隻猪』畀翻『乳猪』外家回禮.

新抱』點解變咗『心抱』, 源於『劉萬章』『廣州兒歌甲集』『廣州謎語』勻記載『心抱』.

 

法國大餐-多舊魚

法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚
法國大餐-多舊魚

喫『法國大餐』除『頭盤』同『湯』外多咗舊魚,第三道餸『魚柳』. 『多舊魚』變音『多㞗餘』『多𨳊餘』,『㞗』音近『鳩』. 指『多餘』.

亦有指係『周打魚湯』所用『三文魚』或『鱈魚』.

 

孫大炮

孫大炮

之所以哎佢『孫大炮』,源於成日『車大炮』講話唔算數『吹水唔抹嘴』. 『車大炮』字面睇車轆『大炮』出嚟檢閲.

『孫大炮』係北美周圍穩人度水革命,各埠洪門變賣祖堂抵押實業助其起義,辛亥革命後洪門大佬黃三德穩『孫大炮』幫『洪門』轉正.同『胡漢民』『踢波』玩度黃三德『氹氹轉』. 甚至連翻美水腳都晤肯相借.

『陳炯明』率粵軍圍『總統府』,『孫大炮』利用『永豐艦』等七艘戰艦炮轟『廣九火車站』,造成大量民房損毀平民死傷.自此『車大炮』改口『孫大炮』,之後利用外軍逼走粵軍,後更消滅『廣州商團』.

竪中指

竪中指儒略歷1415年『享利五世』率軍攻法.英法兩軍展開戰陣,法軍三倍於英軍.『享利五世』係低窪地命『英格蘭長弓兵』擺弧扇陣,插木樁屏障.『約克公爵』負責掩護.前方空地因大水變泥辦,右翼伏『軟甲步兵』,而法軍主要由『重甲騎兵』組成冲鋒方陣.未沖至英軍陣前, 箭雨遮天蔽月『重甲騎兵』即時人昂馬翻死傷慘半,當『重甲步兵』迫近英軍陣前因泥辦後排擠逼前排.右翼英軍睇准時機參戰,隨即戰場變屠場法軍大敗.

『英格蘭長弓』高過人,榆木造弓身輕.具有『遠射程』同『破甲力』.輕易刺穿法軍『重甲』. 『長弓兵』長期訓練臂力驚人,肩胛壓逼脊椎令身高變矮.

『長弓兵』畀法軍俘虜即斬右手『中指』令佢冇力拉弓.至此『英格蘭長弓兵』每係戰陣前『堅中指』暗指『沖埋嚟射瓜你』.

 

 

扑嘢

扑嘢『扑嘢』指『屌屄』『開鑊』,而『扑嘢』專指『男扑女』.

相傳『扑嘢』源於穩『夜總會』小組跳舞,跟住喫宵夜,小組拎埋手袋去『開鑊』,事後唔翻工約姊妹打麻雀.『媽媽桑』睇『夜總會』客多畀電話叫翻工,聽到打麻雀『扑牌』扑扑聲.小組托詞『扑緊嘢』唔得閑. 『扑牌』變『扑嘢』就咁嚟.

另一相傳『金魚』同『木魚』古仔, 『金魚』指巨型落地玻璃小組坐係里面,好似『金魚缸』嘅『金魚』『睇得唔喫得』.

『木魚』源於師姑唸經手執『木鎚』扑『木魚』發出『扑扑聲』,暗指『扑得』.

老虎屌屄

事因『一山唔能藏貳虎』只有等『老虎乸』發鱟過癮,先會穩『老虎公』.因『老虎㞗』有刺,『老虎乸』畀『老虎公』屌會好疼,『老虎屄』大出血仲有可能畀『屌死』. 『老虎乸』畀屌完即走.所以 『老虎屌屄 』『一鑊過』.

『老虎屌屄 一鑊過』

『開鑊』指『扑野』, 源於啊姑『紅眉』,畀綽號『㗎仔』吳威利強姦.上庭時指控畀『㗎仔』 『開咗七鑊』. 所以先有 『梅開七鑊』『開咗七鑊都有罪』『扑鑊金』.