本發(fā)明屬于文檔圖像處理與可視化領(lǐng)域,具體的說是一種基于坐標(biāo)的碟記式家譜生成方法。
背景技術(shù):
1、家譜作為記錄家族成員及其血緣關(guān)系的重要文獻(xiàn),一直是研究家族史、社會(huì)歷史和文化的重要資料。隨著信息技術(shù)的發(fā)展,家譜的電子化和數(shù)字化逐漸成為趨勢(shì),以便于更好地保存、查詢和研究。目前,家譜電子化技術(shù)主要包括家譜樹狀圖、家譜扇形圖、家譜矩陣法、家譜線條圖、家譜背景樹圖以及家譜力向?qū)D等多種形式,這些技術(shù)在一定程度上滿足了家譜的可視化需求。然而,現(xiàn)有的家譜電子化技術(shù)在處理碟記式家譜時(shí)存在一些不足。首先,現(xiàn)有的工具大多需要用戶手動(dòng)輸入信息并調(diào)整布局,這一過程不僅繁瑣,而且容易出錯(cuò)。其次,自動(dòng)化程度低,缺乏能夠快速響應(yīng)用戶需求的家譜生成工具。此外,現(xiàn)有技術(shù)往往采用固定的格式,難以適應(yīng)不同家族的特定需求,靈活性較差。碟記式家譜包含豐富的人物信息,如生辰、官職等,但現(xiàn)有技術(shù)在整合和展示這些復(fù)雜信息方面存在困難。同時(shí),用戶對(duì)于字體大小、頁面布局等個(gè)性化需求難以得到滿足,更新和維護(hù)家譜也相對(duì)困難。因此,盡管家譜電子化技術(shù)已經(jīng)取得了一定的進(jìn)展,但在自動(dòng)化、個(gè)性化以及信息處理方面仍有較大的提升空間。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明是為了解決上述現(xiàn)有技術(shù)存在的不足之處,提出一種基于坐標(biāo)的碟記式家譜生成方法,以期能自動(dòng)化處理復(fù)雜的家譜數(shù)據(jù),提高碟記式家譜制作的效率和準(zhǔn)確性,同時(shí)提供用戶自定義的靈活性,以滿足不同家族對(duì)碟記式家譜展示形式的特定需求。
2、本發(fā)明為達(dá)到上述發(fā)明目的,采用如下技術(shù)方案:
3、本發(fā)明一種基于坐標(biāo)的碟記式家譜生成方法的特點(diǎn)在于,是將圖數(shù)據(jù)庫中所獲取的家譜生成在若干張頁面上,在所述頁面上設(shè)置有邊框,在所述邊框的中間位置處分別設(shè)置有用于分割家譜名稱和人物信息的左、右豎線,記為和,并將和之間的區(qū)域記為中間區(qū)域,將和外側(cè)區(qū)域分別記為左區(qū)域和右區(qū)域;在所述邊框內(nèi)的上方位置處,并處于和外側(cè)的左區(qū)域和右區(qū)域內(nèi)分別設(shè)置有用于分割人物關(guān)系和人物名稱的左、右上橫線,記為和,將上邊框分別與和之間的區(qū)域記為人物關(guān)系區(qū)域;在和的下方分別設(shè)置有用于分割人物名稱和人物簡(jiǎn)介的左、右下橫線,記為和,將和分別與和之間的區(qū)域記為人物名稱區(qū)域;將和分別與下邊框之間的區(qū)域記為人物簡(jiǎn)介區(qū)域,在所述人物簡(jiǎn)介區(qū)域中設(shè)置有若干條簡(jiǎn)介分割線,從而將人物簡(jiǎn)介區(qū)域分割為若干列,所述碟記式家譜生成方法包括如下步驟:
4、步驟1、生成頁面參數(shù),包括:設(shè)置頁面的列數(shù)為cols、人物關(guān)系區(qū)域中的字?jǐn)?shù)的上限為、人物關(guān)系區(qū)域中的字號(hào)為、人物名稱區(qū)域中姓名字?jǐn)?shù)的上限為、人物名稱區(qū)域中姓名的字號(hào)為、人物簡(jiǎn)介區(qū)域中每列的簡(jiǎn)介字?jǐn)?shù)上限為、簡(jiǎn)介字號(hào)為、人物簡(jiǎn)介區(qū)域中每列的寬度、邊框的高度和寬度:
5、步驟2、以頁面的任一頂點(diǎn)為原點(diǎn),與原點(diǎn)相連的兩條邊分別作為x軸和y軸,從而建立頁面坐標(biāo)系,令所述頁面坐標(biāo)系中邊框的左下角頂點(diǎn)坐標(biāo)記為(,?)、邊框的右上角頂點(diǎn)坐標(biāo)記為(,?);計(jì)算頁面上的邊框坐標(biāo),包括:左豎線的上端點(diǎn)橫坐標(biāo)、上端點(diǎn)縱坐標(biāo)、左豎線的下端點(diǎn)橫坐標(biāo)、下端點(diǎn)縱坐標(biāo)、右豎線的上端點(diǎn)橫坐標(biāo)、上端點(diǎn)縱坐標(biāo)、右豎線的下端點(diǎn)橫坐標(biāo),下端點(diǎn)縱坐標(biāo)、左上橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右頂點(diǎn)縱坐標(biāo)、右上橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右頂點(diǎn)縱坐標(biāo)、左下橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右端點(diǎn)縱坐標(biāo)、右下橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右端點(diǎn)縱坐標(biāo)、第i條人物簡(jiǎn)介右分割線的上端點(diǎn)橫坐標(biāo)為、上端點(diǎn)縱坐標(biāo)為、下端點(diǎn)橫坐標(biāo)為,下端點(diǎn)縱坐標(biāo)為、第i條人物簡(jiǎn)介左分割線上端點(diǎn)橫坐標(biāo),上端點(diǎn)縱坐標(biāo);下端點(diǎn)橫坐標(biāo),下端點(diǎn)縱坐標(biāo);
6、步驟3、人物信息坐標(biāo)計(jì)算:
7、步驟3.1.?從圖數(shù)據(jù)庫中按層讀取所有人物節(jié)點(diǎn),得到人物節(jié)點(diǎn)的總數(shù)n;將其中的第j個(gè)人物節(jié)點(diǎn)記為pj={rj,naj,bj},其中,rj表示pj的關(guān)系,naj表示pj的名字,bj表示pj的簡(jiǎn)介;令len(rj)表示rj中字?jǐn)?shù),len(naj)表示naj中字?jǐn)?shù),len(bj)表示bj中字?jǐn)?shù);
8、步驟3.2、將人物簡(jiǎn)介區(qū)域中的每列按照從右到左的順序依次編號(hào),并令第t頁第i列右上角坐標(biāo)為(,?),初始化(,?)=(,?);
9、步驟3.3、初始化j=1;
10、步驟3.4、初始化t=1;
11、步驟3.5、初始化i=1;
12、步驟3.6、初始化kr=1,kna=1,=1;
13、步驟3.7、當(dāng)kr=1時(shí),利用式(16)得到rj中第1個(gè)字在第t頁第i列的橫坐標(biāo)和縱坐標(biāo);
14、?(16)
15、當(dāng)k=2,3,…,len(rj)時(shí),利用式(17)得到和:
16、??(17)
17、步驟3.8、當(dāng)kna=1時(shí),利用式(18)得到naj中第1個(gè)字在第t頁第i列的橫坐標(biāo)和縱坐標(biāo);
18、?(18)
19、當(dāng)k=2,3,…,len(naj)時(shí),利用式(19)得到naj中第kna個(gè)字在第t頁第i列的橫坐標(biāo)和縱坐標(biāo);
20、????(19)
21、步驟3.9、利用式(20)得到bj中第個(gè)字在第t頁第i列的橫坐標(biāo)和縱坐標(biāo);
22、(20)
23、步驟3.10、判斷=0,若成立,表示達(dá)到人物簡(jiǎn)介區(qū)域列的最大字?jǐn)?shù),并執(zhí)行步驟3.11的換列操作;否則,執(zhí)行步驟3.14;其中,表示取余;
24、步驟3.11、將i+1賦值給i,判斷i≤cols,若成立,則執(zhí)行步驟3.13;否則,表示達(dá)到頁面的最大列數(shù),并執(zhí)行步驟3.12的換頁操作;
25、步驟3.12、將t+1賦值給t,令i=1,并利用式(21)得到第t頁第1列橫坐標(biāo)和縱坐標(biāo)?后,執(zhí)行步驟3.14;
26、?????(21)
27、步驟3.13、利用式(22)得到第t頁第i列橫坐標(biāo)和縱坐標(biāo)?后執(zhí)行步驟3.14;
28、??(22)
29、步驟3.14、將+1賦值給后,判斷≤len(bj),若成立,則執(zhí)行步驟3.9;否則,表示完成bj在人物簡(jiǎn)介區(qū)域中的生成,并執(zhí)行步驟3.15;
30、步驟3.15、將j+1賦值給j后,判斷j≤n,若成立,則執(zhí)行步驟3.6;否則,表示家譜中的所有人物都已生成,并流程結(jié)束。
31、本發(fā)明所述的一種基于坐標(biāo)的碟記式家譜生成方法的特點(diǎn)也在于,所述步驟1中是利用式(1)得到人物簡(jiǎn)介區(qū)域中每列的寬度;
32、?????(1)
33、式(1)中,表示人物關(guān)系區(qū)域中字號(hào)的系數(shù);表示人物簡(jiǎn)介區(qū)域中列寬的調(diào)整量;
34、利用式(2)得到所述邊框的高度;
35、????(2)
36、利用式(3)得到所述邊框的寬度;
37、??????(3)
38、式(3)中,表示頁面的列數(shù)cols的系數(shù),表示頁面邊距的調(diào)整量。
39、進(jìn)一步的,所述步驟2包括:
40、步驟2.1、利用式(4)得到左豎線的上端點(diǎn)橫坐標(biāo)、上端點(diǎn)縱坐標(biāo);
41、?(4)
42、式(4)中,為人物簡(jiǎn)介區(qū)域中列寬的系數(shù);
43、步驟2.2、利用式(5)得到左豎線的下端點(diǎn)橫坐標(biāo)、下端點(diǎn)縱坐標(biāo);
44、?(5)
45、步驟2.3、利用式(6)得到右豎線的上端點(diǎn)橫坐標(biāo)、上端點(diǎn)縱坐標(biāo);
46、?(6)
47、步驟2.4、利用式(7)得到右豎線的下端點(diǎn)橫坐標(biāo),下端點(diǎn)縱坐標(biāo):
48、?(7)
49、步驟2.5、利用式(8)得到左上橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右頂點(diǎn)縱坐標(biāo):
50、
51、式(8)中,表示字?jǐn)?shù)上限的調(diào)整量;
52、步驟2.6、利用式(9)得到右上橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右頂點(diǎn)縱坐標(biāo):
53、
54、步驟2.7、利用式(10)得到左下橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右頂點(diǎn)縱坐標(biāo):
55、
56、步驟2.8、利用式(11)得到右下橫線的左端點(diǎn)橫坐標(biāo)、右端點(diǎn)橫坐標(biāo)、左端點(diǎn)縱坐標(biāo)、右端點(diǎn)縱坐標(biāo):
57、
58、步驟2.9、由和將人物簡(jiǎn)介區(qū)域劃分為人物簡(jiǎn)介左區(qū)域和人物簡(jiǎn)介右區(qū)域,并計(jì)算任一側(cè)人物簡(jiǎn)介區(qū)域中的分割線總數(shù),從而將人物簡(jiǎn)介左區(qū)域中的分割線記為{,?,…,?,…},將處于人物簡(jiǎn)介右區(qū)域中的分割線記為{,,…,?,…},其中,表示第i條左分割線,表示第i條右分割線;
59、步驟2.10、當(dāng)i=1時(shí),利用式(12)得到第1條人物簡(jiǎn)介右分割線的上端點(diǎn)橫坐標(biāo)為、上端點(diǎn)縱坐標(biāo)為、下端點(diǎn)橫坐標(biāo)為,下端點(diǎn)縱坐標(biāo)為;
60、?(12)
61、當(dāng)i=2,3,…,m時(shí),利用式(13)得到第i條人物簡(jiǎn)介右分割線的上端點(diǎn)橫坐標(biāo)為、上端點(diǎn)縱坐標(biāo)為、下端點(diǎn)橫坐標(biāo)為,下端點(diǎn)縱坐標(biāo)為;
62、??????(13)
63、步驟2.11、當(dāng)i=1時(shí),利用式(14)得到第1條人物簡(jiǎn)介左分割線的上端點(diǎn)橫坐標(biāo)、上端點(diǎn)縱坐標(biāo)為、下端點(diǎn)橫坐標(biāo)為,下端點(diǎn)縱坐標(biāo)為;
64、?(14)
65、當(dāng)i=2,3,…,m時(shí),利用式(15)得到第i條人物簡(jiǎn)介左分割線上端點(diǎn)橫坐標(biāo),上端點(diǎn)縱坐標(biāo);下端點(diǎn)橫坐標(biāo),下端點(diǎn)縱坐標(biāo);
66、?????(15)。
67、本發(fā)明一種電子設(shè)備,包括存儲(chǔ)器以及處理器的特點(diǎn)在于,所述存儲(chǔ)器用于存儲(chǔ)支持處理器執(zhí)行所述碟記式家譜生成方法的程序,所述處理器被配置為用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的程序。
68、本發(fā)明一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序的特點(diǎn)在于,所述計(jì)算機(jī)程序被處理器運(yùn)行時(shí)執(zhí)行所述碟記式家譜生成方法的步驟。
69、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
70、1、本發(fā)明采用自動(dòng)化的坐標(biāo)計(jì)算方法,通過計(jì)算機(jī)程序自動(dòng)處理家譜數(shù)據(jù),從而克服了現(xiàn)有技術(shù)中手動(dòng)繪制家譜的繁瑣和耗時(shí)問題。這種方法不僅減少了人為錯(cuò)誤,而且大幅度提高了家譜生成的效率,使得用戶能夠在短時(shí)間內(nèi)獲得高質(zhì)量的家譜圖;
71、2、本發(fā)明讓用戶可以根據(jù)自己的需求和偏好,自定義字體大小、頁面布局、列寬等參數(shù),解決了現(xiàn)有技術(shù)中格式固定、缺乏個(gè)性化選項(xiàng)的問題。這種靈活性使得家譜的展示更加符合用戶的審美和實(shí)際需求,增強(qiáng)了家譜的個(gè)性化展示;
72、3、本發(fā)明能夠有效整合復(fù)雜的家族信息,如生辰、官職、成就等,解決了現(xiàn)有技術(shù)難以處理和展示這些信息的問題。這種整合能力使得家譜內(nèi)容更加豐富和完整,為用戶提供了更加詳盡的家族歷史記錄;
73、4、本發(fā)明通過精確的坐標(biāo)定位和自動(dòng)化的數(shù)據(jù)處理,本發(fā)明確保了家譜中人物關(guān)系和信息的準(zhǔn)確展示,提高了家譜數(shù)據(jù)的準(zhǔn)確性和可靠性。這種準(zhǔn)確性對(duì)于家族歷史的研究和記錄至關(guān)重要,確保了家譜作為歷史資料的價(jià)值。