Smart-ID

Smart-ID
Smart-ID
Smart-ID
Smart-ID

之前购『Smart Fingerprint Reader指紋鎖』支持Smart-ID, 今你登入网站時免密碼用指紋. 同埋加密本地資料檔

Smart-ID 簡述
密碼管理 网站指紋登入
保密區 加密本地資料檔
指紋維䕶 录入指紋
備份與維䕶 備份指紋

 

Smart-ID
http://www.emc.com.tw/products/app/1559/SmartIDInstaller_STD_V42_20210928.zip

 

Smart-ID WebAutoLogin
chrome https://chrome.google.com/webstore/search/smart-ID
firefox https://addons.mozilla.org/zh-TW/firefox/addon/smart-id-webautologin/

 

紋理拼圖

紋理拼圖
紋理拼圖

2D游戲動画幀, 由多幅關鍵幀(keyFrame) 組成. 逐幀渲染產生動画卡通.『幀動画』亦哎呌『紋理』texture. 将多幅『幀動画』存放係單壹紋理.OpenGL可提高渲染速度, 係显存記憶體1MB年代可能冇用. 事因渲染皆係電脑記憶體運作.

係显存記憶體大幅增長, OpenGL渲染係显存記憶體完成. 减小『紋理』載入量, 單壹紋理存放多幅『幀動画』,可提高渲染速度.

係3D游戲亦可用相同技術提飛渲染效率.

void zoom_textcoord_model3D(TEXTURE_PTR texture,int index,int size,VECTOR2D_PTR dest,VECTOR2D_PTR sour,int count,int flag)

 

texture 紋理
index 關鍵幀索引
size 關鍵幀寬高解像
dest 纹理隊列
sour 原始纹理隊列
count 纹理頂點量

計單元格

int cell = texture->width / size;

計索引

int  i  = index % cell;// 橫索引
int  j  = index / cell;// 行索引

計缩放率0.0f < zoom < 1.0f

float    zoom    = (float)size / (float)texture->width;

計『幀』偏移.

float offsetX = (float)zoom * (float)i;
float offsetY = (float)zoom * (float)j;

遍歴UV紋理頂㸃

    for (int p = 0; p < count; ++p){

缩細後移動

dest[p].u = sour[p].u * zoom + offsetX ;
dest[p].v = sour[p].v * zoom + offsetY;

纹理返转

if (flag & MODEL3D_TEXTURE_FLIP)

dest[p].v = 1 – (sour[p].v * zoom + offsetY);}

 

SKYBOX天幕

天幕SKYBOX
天幕SKYBOX
天幕SKYBOX
天幕SKYBOX

『天幕SKYBOX』指巨立方體, 係內籠貼天幕紋理,『天幕紋理』可能係『地平線』『室內』『宇宙』. 『天幕SKYBOX』原㸃與3D相機位置重合. 係遠睇時正确.

由陸幅紋理『顶』『底』『前』『後』『左』『右』組成. 以前『天幕SKYBOX』紋理分陸幅位圖存檔.

陸幅位圖存係單壹『紋理』效率更高. 将『紋理』平分拾陸等分. 足够擺两組『天幕』紋理. 『日頭』『晚黑』各壹. 似上圖咁.

紋理索引:0~15 『日頭』 『晚黑』
顶up 0 8
底dn 1 9
前ft 7 15
后bk 5 13
左lt 6 14
右rt 4 12

定義『天幕SKYBOX』

typedef struct SKYBOX_TYP {
VECTOR3D  pos; 位置
VECTOR3D  rot; 旋轉
TEXTURE_PTR texture; 天幕纹理
float     size; 天幕大细
//TEXTURE_REGION region[16]; 纹理区域
VECTOR3D  vertex_array[36]   ; 天幕顶点
VECTOR2D  texCoord_array[36] ; 天幕紋理
}SKYBOX, *SKYBOX_PTR;

手エ构建『天幕SKYBOX』立方體『3D頂㸃』同『UV紋理』. 正方形以两三角形組成. 紋理左上角[u0, v0], 紋理右下角[u1,v1].天幕大细『size』.

天『UV紋理』 『xyz頂㸃』
texCoord[0]=[u1, v1] vertex_array[0]=[-size, size, -size]
texCoord[1]=[u0, v1] vertex_array[1]=[size, size, -size]
texCoord[2]=[u0, v0] vertex_array[2]=[size, size, size]
texCoord[3]=[u1, v1] vertex_array[3]=[-size, size, -size]
texCoord[4]=[u0, v0] vertex_array[4]=[size, size, size]
texCoord[5]=[u1, v0] vertex_array[5]=[-size, size, size]

 

地『UV紋理』 『xyz頂㸃』
texCoord[6]=[u1, v1] vertex_array[6]=[size, -size, -size]
texCoord[7]=[u0, v1] vertex_array[7]=[-size, -size, -size]
texCoord[8]=[u0, v0] vertex_array[8]=[-size, -size, size]
texCoord[9]=[u1, v1] vertex_array[9]=[size, -size, -size]
texCoord[10]=[u0, v0] vertex_array[10]=[-size, -size, size]
texCoord[11]=[u1, v0] vertex_array[11]=[size, -size, size]

 

前『UV紋理』 『xyz頂㸃』
texCoord[12]=[u0, v0] vertex_array[12]=[-size, -size, -size]
texCoord[13]=[u1, v0] vertex_array[13]=[size, -size, -size]
texCoord[14]=[u1, v1] vertex_array[14]=[size, size, -size]
texCoord[15]=[u0, v0] vertex_array[15]=[-size, -size, -size]
texCoord[16]=[u1, v1] vertex_array[16]=[size, size, -size]
texCoord[17]=[u0, v1] vertex_array[17]=[-size, size, -size]

 

后『UV紋理』 『xyz頂㸃』
texCoord[18]=[u0, v0] vertex_array[18]=[size, -size, size]
texCoord[19]=[u1, v0] vertex_array[19]=[-size, -size, size]
texCoord[20]=[u1, v1] vertex_array[20]=[-size, size, size]
texCoord[21]=[u0, v0] vertex_array[21]=[size, -size, size]
texCoord[22]=[u1, v1] vertex_array[22]=[-size, size, size]
texCoord[23]=[u0, v1] vertex_array[23]=[size, size, size]

 

右『UV紋理』 『xyz頂㸃』
texCoord[24]=[u1, v0] vertex_array[24]=[size, -size, size]
texCoord[25]=[u1, v1] vertex_array[25]=[size, size, size]
texCoord[26]=[u0, v1] vertex_array[26]=[size, size, -size]
texCoord[27]=[u1, v0] vertex_array[27]=[size, -size, size]
texCoord[28]=[u0, v1] vertex_array[28]=[size, size, -size]
texCoord[29]=[u0, v0] vertex_array[29]=[size, -size, -size]

 

左『UV紋理』 『xyz頂㸃』
texCoord[30]=[u1, v0] vertex_array[30]=[-size, -size, -size]
texCoord[31]=[u1, v1] vertex_array[31]=[-size, size, -size]
texCoord[32]=[u0, v1] vertex_array[32]=[-size, size, size]
texCoord[33]=[u1, v0] vertex_array[33]=[-size, -size, -size]
texCoord[34]=[u0, v1] vertex_array[34]=[-size, size, size]
texCoord[35]=[u0, v0] vertex_array[35]=[-size, -size, size]

 

游戲輵-弧形碰撞

游戲輵-弧形碰撞
游戲輵-弧形碰撞

事因『風水羅盤』由弧扇形基座組成. 要開發弧扇形碰撞技術.

先定義弧扇結构, 『角度』『弧度』係硬幣两面, 係相, 可相互轉換換

角度 = 弧度 * 180.0/PI
弧度= 角度 * PI/180.0

弧扇形基座有两『弧度』相等弧形, 离中點距离唔同, 遠离中點弧.較埋中點弧,

typedef struct ARC2D_TYP { 弧扇結构
VECTOR2D center; 中心點
float angle; 角度
float rotate; 轉旋
float far; 最远點
float near; 最近點
}ARC2D, *ARC2D_PTR;  

首要判断命中㸃是咪係『最远點』『最近點』之間.

命中㸃

Init_VECTOR2D(&va,x,y);

計觸摸㸃同弧中心㸃距離

Sub_VECTOR2D(&vdiff, &arc->center, &va);

計向量長度

float length = Length_VECTOR2D(&vdiff);

判断命中弧線之間

if(length < arc->near || length > arc->far )

return false;

計落點位於弧扇夹角之間. 弧扇夹两邊長壹致. 即等邊三角形, 視同两直角三角形.

sin(a)= 對邊/斜邊.  
a= asinf (對邊/斜邊) asinf(弧度)

計弧扇邊長

Copy_VECTOR2D(&va,&vdiff);

Init_VECTOR2D(&vb,0,length);

Sub_VECTOR2D(&vdiff, &va, &vb);

cEdge = Length_VECTOR2D(&vdiff);

計va和vb之间的夹角

cAngle = RAD_TO_DEG( asinf((cEdge / 2) / bEdge) ) * 2;

判断命中弧形夹角之間

begin = (-arc->angle/2) + arc->rotate ;

end   = (arc->angle/2) + arc->rotate ;

return Compute_Angle_In_RAC(cAngle, begin, end); // 夹角落㸃

 

判断頂是咪係弧內

bool Compute_Angle_In_RAC(float angle,float begin,float end){

float offset;

angle = Format_Angle(angle);//格式角

begin = Format_Angle(begin);//格式角

end = Format_Angle(end);//格式角

if(_begin > _end){

_end   = _end + 360;

if(_angle > 0 && _angle < end )

_angle = _angle + 360;

}

 

if( _angle >= _begin && _angle <= _end )// 夹角落㸃

return true; return false;

}

 

歸壹角/格式角

float Format_Angle(float angle){

if(angle < 0)

angle = angle + 360;

else

if(angle >= 360)

angle = angle – 360;

return angle;

}

 

 

Kingston-DataTraveler® Kyson™ 32GB

Kingston-DataTraveler® Kyson™ 32GB
Kingston-DataTraveler® Kyson™ 32GB
Kingston-DataTraveler® Kyson™ 32GB
Kingston-DataTraveler® Kyson™ 32GB
CrystalDiskMark
CrystalDiskMark

手多多落單買Kingston 32GB號称『讀』每秒200MB. 支持『USB3.2』要剪爛包裝拎U盤出蒞.用 CrystalDiskMark測『讀』每秒達196MB.

DTKN/32GB 『讀』Read MB/s 『寫』Write MB/s
Seq Q32 T1 196.7 26.3

默認FAT32, 上世紀WIN98己用FAT32檔案系統, 單壹文檔受4BYTE尋址影响极限4GB, 所以自WinNT用NTFS檔案系統, 高清4K電影可超過4GB. 需NTFS或exFAT支持, 『exFAT』優勢係『Windows』同『MAC』皆支持.

檔案系統 操作系統
FAT32 Window9X
NTFS WindowNT
exFAT WindowNT同MAC

 

SEAGATE 16TB Exos™ X16 ST16000NM001G

SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G

前兩年買『SEAGATE 8TB EXOS™ ST8000NM0055』畀影片逼爆. 又唔舍得刪. 本蒞諗住砌台NAS. 估價成萬蚊. 冇米諗唔掂.

睇啱『SEAGATE 16TB Exos™ X16 ST16000NM001G』.16TB畀8TB大壹倍. 应刻可撑多两年先砌NAS.

Windows10磁碟分區. PMR垂直式-氦氣密封設計.CrystalDiskMark測寫230MB讀230MB

型號 X16 ST16000NM001G
接口類型 SATA3 6Gb/S
容量 16TB
轉速 7200RPM
緩存 256MB
工作負荷評級 TB/年
平均故障間隔時間 250萬小時
231.9MB/S
231.7MB/S

 

 

Windows10-Smart Fingerprint Reader

Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
ELAN Finger Print - Biometric
ELAN Finger Print – Biometric

Kensington指紋鎖』識認差又貴又唔好,係网買雜牌『指紋鎖』, 智能学習每次登入补缺指紋. 其触摸面比『Kensington』大. 即使手指有水亦可識認指紋.

需装ELANTECH触摸板驱动. 稳新版舊版識認唔到, 下載『.cab』并解壓.

指紋鎖驅動
ELAN Finger Print – Biometric – 3.10.11001.10606
https://www.catalog.update.microsoft.com/Search.aspx?q=elan+fingerprint

可能要手動装

  1. 『装置管理員』
  2. 撳『ELAN:Fingerprint』->『更新驅動程式』
  3. 撳『瀏覧電腦上驅動程式-手動尋找并安装驅動程式』
  4. 撳『讓我從電腦上的可用驅動程式清單中挑選-此清單將會顯示與装置相容可用驅動程式, 以及與装置屬於同類別所有驅動程式』
  5. 撳『從磁片安装』
  6. 撳『瀏覧』.
  7. 驅動程式『檔䅁位置』含『inf』.撳『确定』.
  8. 撳『下壹步』装驅動.

 

設置『Windows Hello指紋』

  1. 『設置』->『賬戶』->『登入選項』
  2. 『Windows Hello指紋』->『設定』
  3. 若冇識別指紋鎖需裝驅動程式『ELAN WBF Fingerprint Sensor
  4. 輸入『PIN碼』.
  5. 『觸碰指紋感應器』手指重複擺在感應後又移開, 直到設定成功.

 

Canon PRINT Business

Canon PRINT Business
Canon PRINT Business

『Canon PRINT Business』運作需裝『Canon Print Service』,可直接發指今掃描影印『文檔』『圖檔』.

  1. 著Canon『影印機』
  2. 撳左上角『加號』,揀Canon『影印機』
  3. 撳『文檔』影印.