2016年10月8日 星期六

JavaFX遊戲程式設計 (第三版)

2016年的第一本新書 –「JavaFX遊戲程式設計 (第三版)」,我的第35本繁體專書。

章節包括:

  1. JavaFX.
  2. 事件.
  3. 繪圖.
  4. 特殊效果.
  5. 動畫.
  6. 井字遊戲 (Tic Tac Toe).
  7. 拼圖 (Puzzle).
  8. 曲棍球 (Hockey).
  9. 孔明棋 (Peg Solitaire).
  10. 黑白棋 (Reversi).
  11. 西洋跳棋 (Checker).
  12. 翻翻樂 (Matching Card).
  13. 新接龍 (Free Cell).
  14. 俄羅斯方塊 (Tetris).
  15. 踩地雷 (Mine Sweeper).
  16. 數獨 (Sudoku).
It is my new book, JavaFX Game Programming (3rd edition), in 2016. It covers the following chapters:
  1. Introduction to JavaFX.
  2. JavaFX Event.
  3. 2D Graph.
  4. Effect.
  5. Timeline and Transition.
  6. Tic Tac Toe).
  7. Puzzle.
  8. Hockey.
  9. Peg Solitaire.
  10. Reversi.
  11. Checker.
  12. Matching Card.
  13. Free Cell.
  14. Tetris.
  15. Mine Sweeper.
  16. Sudoku.
© Chia-Hui Huang

2016年4月17日 星期日

JavaFX 3D - Icosidodecahedron

以下是以JavaFX 8的TriangleMesh類別建構之Icosidodecahedron (截半二十面體),屬於Archimedean Solid (阿基米德立體)。

float C0 = length * (float) (1.0 + Math.sqrt(5.0)) / 4.0f;
float C1 = length * (float) (3.0 + Math.sqrt(5.0)) / 4.0f;
float C2 = length * (float) (1.0 + Math.sqrt(5.0)) / 2.0f;
float C3 = length * 0.5f;

// 建立TriangleMesh
TriangleMesh trianglemesh = new TriangleMesh();

// 設定頂點座標
trianglemesh.getPoints().addAll(
  0.0f, 0.0f,   C2,
  0.0f, 0.0f,  -C2,
    C2, 0.0f, 0.0f,
   -C2, 0.0f, 0.0f,
  0.0f,   C2, 0.0f,
  0.0f,  -C2, 0.0f,
    C3,   C0,   C1,
    C3,   C0,  -C1,
    C3,  -C0,   C1,
    C3,  -C0,  -C1,
   -C3,   C0,   C1,
   -C3,   C0,  -C1,
   -C3,  -C0,   C1,
   -C3,  -C0,  -C1,
    C1,   C3,   C0,
    C1,   C3,  -C0,
    C1,  -C3,   C0,
    C1,  -C3,  -C0,
   -C1,   C3,   C0,
   -C1,   C3,  -C0,
   -C1,  -C3,   C0,
   -C1,  -C3,  -C0,
    C0,   C1,   C3,
    C0,   C1,  -C3,
    C0,  -C1,   C3,
    C0,  -C1,  -C3,
   -C0,   C1,   C3,
   -C0,   C1,  -C3,
   -C0,  -C1,   C3,
   -C0,  -C1,  -C3  
);

// 設定貼圖座標
trianglemesh.getTexCoords().addAll(
  0.50f, 1.0f,
  0.75f, (float) (1.0-Math.sqrt(3.0)/4.0f),
  0.25f, (float) (1.0-Math.sqrt(3.0)/4.0f),
  1.00f, 1.0f,
  0.50f, (float) (1.0-Math.sqrt(3.0)/2.0f),
  0.00f, 1.0f
);

// 設定各三角形的面
trianglemesh.getFaces().addAll(
   0, 2,  6, 1, 10, 4,
   0, 2, 12, 1,  8, 4,
   1, 2,  9, 1, 13, 4,
   1, 2, 11, 1,  7, 4,
  14, 2, 16, 1,  2, 4,
  14, 2, 22, 1,  6, 4,
  17, 2, 15, 1,  2, 4,
  17, 2, 25, 1,  9, 4,
  19, 2, 21, 1,  3, 4,
  19, 2, 27, 1, 11, 4,
  20, 2, 18, 1,  3, 4,
  20, 2, 28, 1, 12, 4,
  23, 2,  4, 1, 22, 4,
  23, 2, 15, 1,  7, 4,
  24, 2,  5, 1, 25, 4,
  24, 2, 16, 1,  8, 4,
  26, 2,  4, 1, 27, 4,
  26, 2, 18, 1, 10, 4,
  29, 2,  5, 1, 28, 4,
  29, 2, 21, 1, 13, 4,
   0, 0,  8, 1, 16, 2,
   0, 0, 16, 1, 14, 2,
   0, 0, 14, 1,  6, 2,
   0, 0, 10, 1, 18, 2,
   0, 0, 18, 1, 20, 2,
   0, 0, 20, 1, 12, 2,
   1, 0,  7, 1, 15, 2,
   1, 0, 15, 1, 17, 2,
   1, 0, 17, 1,  9, 2,
   1, 0, 13, 1, 21, 2,
   1, 0, 21, 1, 19, 2,
   1, 0, 19, 1, 11, 2,
   2, 0, 15, 1, 23, 2,
   2, 0, 23, 1, 22, 2,
   2, 0, 22, 1, 14, 2,
   2, 0, 16, 1, 24, 2,
   2, 0, 24, 1, 25, 2,
   2, 0, 25, 1, 17, 2,
   3, 0, 18, 1, 26, 2,
   3, 0, 26, 1, 27, 2,
   3, 0, 27, 1, 19, 2,
   3, 0, 21, 1, 29, 2,
   3, 0, 29, 1, 28, 2,
   3, 0, 28, 1, 20, 2,
   4, 0, 23, 1,  7, 2,
   4, 0,  7, 1, 11, 2,
   4, 0, 11, 1, 27, 2,
   4, 0, 26, 1, 10, 2,
   4, 0, 10, 1,  6, 2,
   4, 0,  6, 1, 22, 2,
   5, 0, 24, 1,  8, 2,
   5, 0,  8, 1, 12, 2,
   5, 0, 12, 1, 28, 2,
   5, 0, 29, 1, 13, 2,
   5, 0, 13, 1,  9, 2,
   5, 0,  9, 1, 25, 2
);

// 設定各面的平滑參數
trianglemesh.getFaceSmoothingGroups().addAll(
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0,
  0, 0, 0, 0
);

// 建立MeshView
MeshView meshview;

meshview = new MeshView(createMesh(100));
...
【參考資料】

[1] Java Official Web Site:http://www.oracle.com/technetwork/java/index.html
[2] JavaFX:http://www.oracle.com/technetwork/java/javafx
[3] JavaFX 8.0 API Specification.
[4] Java Platform, Standard Edition 8 API Specification.
[5] JDK 8 Certified System Configurations.
[6] H. M. Cundy, A. P. Rollett, Mathematical Models, Tarquin Publications, 1981.
[7] G. Sellers, R. S. Wright, N. Haemel, OpenGL SuperBible: Comprehensive Tutorial and Reference (6th Edition), Addison-Wesley Professional, 2013.
[8] 黃嘉輝, JavaFX 8技術手冊, ISBN: 9789863474050, 碁峰資訊, 2014.

© Chia-Hui Huang

2016年2月27日 星期六

SAP Business Intelligence - Radio Button

選擇鈕或選項按鈕 (Radio Button) 是由數個選擇鈕群組而成,為圓圈狀且僅能單選的選取器。

與選擇鈕類似的選取器是核取方塊 (Check Box),核取方塊可由1至數個核取方塊群組而成,為方格狀且能複選的選取器。

透過選擇鈕或核取方塊可將資料依不同的條件篩選出不同的結果,以建立圖表互動,讓圖表更加多樣化。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-選擇鈕 (Radio Button),國立臺北商業大學。

© Chia-Hui Huang

SAP Business Intelligence - Gauge

儀錶圖 (Gauge) 如同汽車儀錶板,以圓形的刻度顯示範圍值。與儀錶圖類似的單一值是刻度盤 (Dial),刻度盤同樣為圓形的刻度顯示器,差別在於刻度盤通常用來選擇值,而儀錶圖則多用來顯示值。此外,儀錶圖常搭配警示屬性,以顏色區分不同的範圍值。


【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-儀錶圖 (Gauge),國立臺北商業大學。

© Chia-Hui Huang

2016年2月26日 星期五

SAP Business Intelligence - Filter Selector

篩選器 (Filter Selector) 是由1至10個下拉式方塊 (Combo Box) 所組成,透過篩選器可將資料依不同的條件組合,篩選出不同的結果,以建立圖表互動,讓圖表更加多樣化。

當選擇其中一個下拉式方塊的選項時,其餘下拉式方塊的選項將隨著所設定的條件關係而變動。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-篩選器 (Filter Selector),國立臺北商業大學。

© Chia-Hui Huang

2016年2月24日 星期三

SAP Business Intelligence - List Box

選取器包括:
  • 核取方塊 (Check Box)
  • 圖示 (Icon)
  • 按鈕 (Push Button)
  • 下拉式方塊 (Combo Box)
  • 篩選器 (Filter)
  • 標籤式功能表 (Label Based Menu)
  • 播放選取器 (Play Control)
  • 魚眼式圖片功能表 (Fisheye Picture Menu)
  • 清單方塊 (List Box)
  • 清單檢視 (List View)
  • 清單產生器 (List Builder)
  • 選擇鈕 (Radio Button)
  • 計分卡 (Scorecard)
  • 階層表格 (Spreadsheet Table)
選取器 (Selector) 如下拉式方塊 (Combo Box)、清單方塊 (List Box)、清單檢視 (List View)、選擇鈕 (Radio Buttons)、清單產生器 (List Builder)、計分卡 (Scorecard)、標籤式功能表 (Label Based Menu)、魚眼式圖片功能表 (Fisheye Picture Menu) 等,均以插入類型 (Insertion Type) 設定資料插入的方式。

插入類型分為位置、標籤、值、資料列、資料行、狀態清單、篩選的資料列等七種類型。

清單方塊或檢視清單 (List Box) 包含一個以上的選項項目,項目超過顯示區域大小時,清單方塊會自動顯示捲軸,以便以捲動方式列出項目。

與清單方塊類似的選取器是下拉式方塊 (Combo Box) 與篩選器 (Filter Selector),差別在於下拉式方塊將一組項目顯示於一列(Row) 之內,當點選時,則以下拉式選單的方式列出項目,而清單方塊則是將一組項目顯示於區域內,若超過顯示區域大小時,則以捲軸列出項目。

透過清單方塊可將資料依不同的條件篩選出不同的結果,以建立圖表互動,讓圖表更加多樣化。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-清單方塊 (List Box),國立臺北商業大學。

© Chia-Hui Huang

2016年2月22日 星期一

SAP Business Intelligence - Drill-Down Analysis

向下分析 (Drill-Down Analysis) 並不只是圖表,而是將數個圖表建立Master-Detail關聯,當點選主要圖表時,其關聯之明細圖表則顯示對應的詳細資料。

圖表類型並沒有限制,SAP Crystal Presentation Design內建的圖表均可做為主要圖表與明細圖表。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-向下分析 (Drill-Down Analysis),國立臺北商業大學。

© Chia-Hui Huang

2016年2月20日 星期六

SAP Business Intelligence - Combination Chart

組合圖 (Combination Chart) 結合折線圖與長條圖於一個圖表中,並以不同的標記類型 (例如欄、折線或區域線) 顯示各項資料序列。


【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-組合圖 (Combination Chart),國立臺北商業大學。

© Chia-Hui Huang

2016年2月18日 星期四

SAP Business Intelligence - OHLC Chart

OHLC圖 (Open-High-Low-Close Chart) 又稱為股票圖、技術分析圖或美國線,是以豎立的線條表現股票價格的變化,並呈現開盤價、最高價、最低價與收盤價,豎線呈現最高價和最低價間的價差間距,左側橫線代表開盤價,右側橫線代表收盤價,繪製上較K線圖簡單。

另外還有最高價-最低價-收盤價、成交量-最高價-最低價-收盤價、成交量-開盤價-最高價-最低價-收盤價等三種呈現方式。

為建立OHLC圖,需輸入股票開盤價、最高價、最低價與收盤價,資料可自臺灣證券交易所 (TWSE)、公開資訊觀測站及櫃檯買賣中心 (OTC) 取得。 以臺灣證券交易所 (TWSE)為例:

http://www.twse.com.tw

接著點選『交易資訊』→『TWSE自行編制指數』→『發行量加權股價指數歷史資料』選單,則可選擇年份與月份,並下載資料。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-OHLC圖 (Open-High-Low-Close Chart),國立臺北商業大學。

© Chia-Hui Huang

2016年2月16日 星期二

SAP Business Intelligence - Bullet Chart

重點式圖表或子彈圖 (Bullet Chart) 分為水平與垂直重點式圖表,實際上重點式圖表是長條圖附加額外的選項,包括效能、比較標記、高比例與低比例。

除了長條圖之外,重點式圖表並可顯示目標值 (Target) 及兩個以上的定性範圍 (Qualitative Ranges),這些範圍用以表示資料的性質,例如好壞、滿意程度等。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-重點式圖表 (Bullet Chart),國立臺北商業大學。

© Chia-Hui Huang

2016年2月14日 星期日

SAP Business Intelligence - Pie Chart

圓形圖或圓餅圖 (Pie Chart) 將圓形統計圖表劃分成幾個不同比例的扇形區域,藉以描述量、頻率或百分比之間的相對關係。在圓形圖中,每個扇區的面積大小代表所表示數量的比例。圓形圖又可分為分裂式圓形圖、3D圓形圖、極區圖等。

由於圓形圖以面積取代長度表達相對關係,如此反而加大了對各個數據比較的難度。因此若需要進行數據比較,建議使用折線圖或長條圖。



【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-魚眼式圖片功能表 (Fisheye Picture Menu),國立臺北商業大學。

© Chia-Hui Huang

2016年2月12日 星期五

SAP Business Intelligence - Line Chart

折線圖 (Line Chart)用以顯示一段時間內的連續資料,且根據一般的比例進行設定,因此適合顯示相等間隔內資料的趨勢,在折線圖中,類別資料沿著水平軸均勻分散,所有資料沿著垂直軸均勻分散。

長條圖 (Bar Chart)用以顯示一段時間內資料的變更或比較不同項目間的差異,在長條圖中,通常沿著水平軸顯示類別、沿著垂直軸顯示值。長條圖又分為群組長條圖、百分比堆疊長條圖、立體長條圖、圓柱圖、圓錐圖與金字塔圖。

區域圖 (Area Chart)用以區域圖強調一段時間的變動程度,例如可使用區域圖繪製代表一段時間內利潤的資料,強調利潤總和。區域圖也可藉由顯示繪製值的總和,顯示部分與整體的關係。區域圖又分為平面區域圖、立體區域圖、堆疊區域圖、百分比堆疊區域圖。

由於折線圖、長條圖、區域圖、堆疊長條圖與堆疊區域圖在商業智慧中的製作與設定均一致,因此歸類為基本圖表。

進階功能包括啟用執行階段工具與啟用範圍滑動軸,適用於折線圖、OHLC圖、燭臺圖、長條圖、堆疊長條圖、直條圖、堆疊直條圖、組合圖、區域圖、堆疊區域圖、雷達圖、填滿式雷達圖、瀑布圖。若啟用執行階段工具,座標軸之刻度將隨著資料值增加而自動展開或自動調整以配合資料範圍。當處理大量資料時,為避免畫面擁擠,可啟用範圍滑動軸,縮小資料範圍,並以捲動的方式檢視資料。



可點選圖例標籤以隱藏或顯示圖表數列,亦可以範圍滑動軸縮小資料範圍,並以捲動的方式檢視資料。


【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。
[2] 黃嘉輝,商業智慧應用-基本圖表操作,國立臺北商業大學。

© Chia-Hui Huang

2016年2月10日 星期三

SAP Crystal Presentation Design

商業智慧 (Business Intelligence, BI) 一詞最早於1989年由Gartner Group分析師Howard Dresner所提出,為一傘型概念,代表可協助企業決策之技術及工具統稱 (“Business intelligence” as an umbrella term to describe "concepts and methods to improve business decision making by using fact-based support systems.")。

根據Gartner Group (http://www.gartner.com) 的統計,全球商業智慧軟體市場的規模,由1990年的5億美元增加至現在約63億美元,國內外商業智慧代表軟體包括:
  • SAP BusinessObjects.
  • SAS Business Intelligence.
  • Oracle Business Intelligence.
  • IBM Cognos.
  • Microsoft ProClarity.
  • MicroStrategy Business Intelligence. 
  • 睿智資訊Analyzer.
  • 鼎新電腦V-Point BI.
  • 慧盟資訊科技BI@Planning.
  • 捷智商訊科技Spatial Intelligence.
商業智慧軟體包括查詢報表與進階分析工具,前者包括一般查詢、多維度分析、儀表板 (Dashboard) 及報表產生工具等,後者則包括資料探勘及統計分析兩類。透過商業智慧系統的導入,可將各個獨立系統的資料彙整,並透過商業智慧所提供的分析功能,快速地整合資料並加以分析,轉換成可產生收益的智慧資產。

一般而言,商業智慧系統的架構與技術包括以下四類:
  • 應用系統的作業資料。
  • 資料擷取、轉換與載入工具。
  • 資料倉儲管理。
  • 商業智慧分析工具。
其中資料擷取、轉換與載入 (Extraction, Transformation, Load) 是導入資料倉儲過程中最重要的工作,資料擷取需考量各部門不同的型態資料、不同使用者的分析需求、多樣的分析工具,將所有整合方能有效運作。資料倉儲 (Data Warehouse) 則是透過一連串的資料純化、轉換、整合、載入與定期資料更新建構的過程。此外商業智慧分析並包括線上分析處理 (Online Analytical Processing, OLAP) 、資料探勘 (Data Mining) 與報表系統 (Reporting) 等技術。

SAP Crystal Presentation Design (Xcelsius Dashboard) 是一商業智慧軟體,可將Excel試算表轉換成視覺化的動態分析模式。

儀表板 (Dashboard):
  • 儀表板以簡單明瞭的方式與資料建立互動。
  • 使用儀表板將更容易監控重要的商務資訊。
  • 儀表板可將商業智慧轉換成強而有力商務能量。
系統需求:
  • 作業系統:Windows XP SP1+, Windows Server 2003 Enterprise Edition+, Windows Vista+, Windows 7。
  • 瀏覽器:Google Chrome, Apple Safari, Mozilla Firefox 2.0+, Microsoft Internet Explorer 6.0+。
  • Adobe Flash Player:9.0.151.0+。
  • Microsoft Office:XP SP3+, 2003, 2007。
SAP BusinessObjects的系統架構如下圖所示,藉由其核心的三層式架構包括資料來源 (Data Source) 、企業邏輯 (Business Logic) 與視覺化 (Visualization),將視覺化的商業智慧匯出成不同的資料格式,如Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft Outlook, Adobe PDF, Adobe Shockwave Flash, Adobe Air, HTML等,此外並可與Adobe Flash, Crystal Reports, IBM WebSphere Server, Microsoft SharePoint Server, Portal Info, Web Service, XML Data等資料架構整合。


SAP Crystal Presentation Design支援Microsoft WordMicrosoft ExcelMicrosoft PowerPointMicrosoft OutlookMicrosoft SharePointAdobe PDFAdobe FlashAdobe AirHTML等匯出資料格式

Dashboard Component (元件) 分為:
  • 圖表 (Chart)
  • 容器 (Container)
  • 選取器 (Selector)
  • 單一值 (Single Value)
  • 地圖 (Map)
  • 文字 (Text)
  • 美工和背景 (Art and Background)
  • Web連線 (Web Connectivity)
  • 其他 (Other)
其中圖表SAP圖表元件包括:
  • 折線圖 (Line Chart)
  • 長條圖 (Bar Chart)
  • 區域圖 (Area Chart)
  • 圓形圖 (Pie Chart)
  • 組合圖 (Combination Chart)
  • XY散佈圖 (XY Chart)
  • OHLC圖 (OHLC Chart)
  • 雷達圖 (Radar Chart)
  • 堆疊長條圖 (Stacked Bar Chart)
  • 堆疊區域圖 (Stacked Area Chart)
  • 樹狀地圖 (Tree Map)
  • 瀑布圖 (Waterfall Chart)
容器元件包括:
  • 畫布容器 (Canvas)
  • 面板容器 (Panel)
  • 索引標籤組 (Tab Set)

選取器包括:
  • 核取方塊 (Check Box)
  • 圖示 (Icon)
  • 按鈕 (Push Button)
  • 下拉式方塊 (Combo Box)
  • 篩選器 (Filter)
  • 標籤式功能表 (Label Based Menu)
  • 播放選取器 (Play Control)
  • 魚眼式圖片功能表 (Fisheye Picture Menu)
  • 清單方塊 (List Box)
  • 清單檢視 (List View)
  • 清單產生器 (List Builder)
  • 選擇鈕 (Radio Button)
  • 計分卡 (Scorecard)
  • 階層表格 (Spreadsheet Table)

單一值包括:
  • 值 (Value)
  • 微調鈕 (Spinner)
  • 滑動軸 (Slider)
  • 雙滑動軸 (Dual Slider)
  • 進度列 (Progress Bar)
  • 刻度盤 (Dial)
  • 儀表圖 (Gauge)

Dashboard Workspace 開發環境:


畫布 (Canvas) 是開發環境的主要部份,用以配置元件、設定畫布背景及大小:


內嵌試算表(Embedded Spreadsheet) 是SAP Crystal Presentation Design新增功能,與Microsoft Excel整合,可自行輸入資料或匯入Excel試算表,藉以建立與畫布中元件之資料連結。

屬性面板 (Properties Panel) 依不同元件,大致可分為:
  • 一般:設定圖表標題、資料範圍、標籤等。
  • 插入:啟用資料插入、設定互動選項等。
  • 行為:設定排序、動態可視性、動畫效果等。
  • 外觀:啟用圖例、設定文字字型、顏色、大小等。
  • 警示:啟用警示、警示臨界值、顏色順序等。
SAP BusinessObjects除了支援一般電腦之外,並支援平板電腦如Apple iPad,稱為SAP BusinessObjects Mobile,簡稱SAP BI,可讓使用者隨時從行動裝置取得BI資訊。以Apple iPad為例,透過App Store下載SAP BusinessObjects Mobile與SAP BusinessObjects Explorer,如下所示:


【參考資料】

[1] 黃嘉輝,商業智慧應用-SAP Crystal Presentation Design,國立臺北商業大學。 
[2] 黃嘉輝,商業智慧應用-基本圖表操作,國立臺北商業大學。

© Chia-Hui Huang