文章分類

2013年9月21日 星期六

[ OLEDB ] Problem: "microsoft.ace.oledb.12.0' provider is not registered on the local machine"


資料庫遇到的問題如下
'microsoft.ace.oledb.12.0' provider is not registered on the local machine"

參考以下國外文章,英文果然比較詳細、正確
http://social.msdn.microsoft.com/Forums/en-US/1d5c04c7-157f-4955-a14b-41d912d50a64/how-to-fix-error-the-microsoftaceoledb120-provider-is-not-registered-on-the-local-machine

如文章所述,只要:
1. Win7 64bits
2. Office 64 bits
3. AccessDatabaseEngine 2007

Done !

2013年9月5日 星期四

[ WPF ] Kinect 骨架追蹤

骨架追蹤主要分為兩個模式
  1. 預設模式:正常的完整股價(20個節點)
  2. 坐姿模式:肩膀中心以下都忽略(10個節點)
SDK1.7的新功能似乎自動採用 "坐姿模式",
使得一開始介面操作,轉換到遊戲進行時,
只偵測到10個節點,導致下肢遊戲無法進行。

解決辦法:
  KinectSensor myKinect; 
  myKinect.SkeletonStream.TrackingMode = SkeletonTrackingMode.Default;

[ WPF ] 2D旋轉 RotateTransform

WPF提供了控制項的"旋轉"功能

(1) 
以旋轉一個名為ball的物件為例
旋轉前要先設定"旋轉中心"、"旋轉角度"

  RotateTransform rotate = new RotateTransform();
  rotate.Angle = "90";
  ball.RenderTransform = rotate;

說明:
旋轉不是"直接"旋轉,
而是要先建立一個虛擬旋轉物件(RotateTransform),
設定好此虛擬旋轉物件的內容(旋轉中心、角度),
再將真正要旋轉的控制項(此例為ball),
設定RenderTransform參照到虛擬的旋轉物件,才可真正旋轉。

註1: RenderTransform直翻就是: 使其旋轉 ... 很合邏輯^^
註2: 沒有設定旋轉中心的話,預設是以物件的左上角為中心。

(2) 
通常旋轉都要以其 "中心" 為基準

雖然有 CenterX, CenterY屬性可以設定,
但不是每個物件都有絕對座標可以拿來設定,
所以RenderTransformOrigin這個屬性,
用來設定相對位置,就比較好用摟!

  RotateTransform rotate = new RotateTransform();
  rotate.RenderTransformOrigin = new Point(0.5, 0.5);
  rotate.Angle = "90";
  ball.RenderTransform = rotate;

[ WPF ] 物件沿著"拋物線"軌跡移動

本來以為要像高中數學一樣
先知道焦點為何,準線方程式,然後套用
 [ 拋物線的點到焦點的距離 = 拋物線的點到準線的距離 ]
但我是在寫"程式",所以只要知道三點,直接帶進去解聯立即可

範例: 想讓球沿著拋物線軌跡移動。



二次方程
公式 y= ax^2 + bx + c
----------------------------------
自己在想要的軌跡弧度上, 依序擺放同個物件
(雖然實際只有一顆球,但現在假裝有三個的意思),
看看分別的座標(X,Y)是多少,
三點帶入方程式,即可求解。

用Canvas.Left、Canvas.Top當座標來看
例如(-184, 0) (245, 0), (670, 248)

帶入方程式,得到
a=0.001373
b=0
c=0

得到答案 y=0.001373*x*x

然後再拿去程式做運用,
只要控制x即可,方便很多。