头像
郑光
教授
地理与海洋科学学院
电话:
邮箱:
zhengguang@nju.edu.cn
地址:
南京大学仙林校区国际地球系统科学研究所
办公地址:
昆山楼B-414
邮编:
210046

  •         Dr. Guang Zheng is a Professor of Remote Sensing at the International Institute for Earth System Science (ESSI) of Nanjing University (NJU). His researches focus on: 

           (1) characterizing three-dimensional (3-D) forest canopy structure using the light detection and ranging (lidar) data generated from various platforms, including Space-bore lidar, Aerial Laser Scanning (ALS), Mobile Laser Scanning (MLS), Terrestrial Laser Scanning (TLS), and UAV-based laser scanning (ULS) data; 

           (2) investigating the interactions and relationships between forest canopy structure, radiation regime, and physiological processes; and 

           (3) monitoring and updating forest aboveground biomass (AGB) by combining multi-source remotely sensed data and process-based ecological model. 

           He got his Ph.D. from the Remote Sensing and Geospatial Analysis Laboratory (RSGAL)at the University of Washington (UW). He worked closely with Precision Forestry Cooperative (PFC)to understand the forest canopy structure and its implications and interactions with the radiation regime and physiological processes of the terrestrial ecosystem.


    Education background:

        University of Washington (2011)    PhD

        Nanjing University (2007)   MSc

        Nanjing Forestry University (2004)   BS





  • Publications:

    Google Scholar Citations: https://scholar.google.com/citations?user=Bno1TuAAAAAJ&hl=en


    *2024

    63. Chen, M.Y. Zheng,G., Qu, Y.J.. Stratifying forest overstory and understory LAI profiles in the temperate forest using GEDI data. (in prep).

    62.Qu,Y.J.,Zheng,G., Xu,C.,Ma,X., Li,X.X.. Characterizing savanna canopy heights using GEDI and spatially continuous spectral and backscattering information in a landscape level. (in prep).

    61. Ma,X., Zheng,G., Xu,C., Moskal,L.M.,Gong, P., Guo,Q.H.,Huang,H.B., Li.X.C.,Pang,Y.,Wang,C.,Xie,H.,Yu,B.L.,Zhao,B.,Zhou,Y.Y. A global product of fine-scale urban building height based on spaceborne lidar. Remote Sensing of Environment. 2024 (in review). 

    60. Li, J.R.,Zheng,G., Xia, J.Y., Yun, Z.X., Tian, S.H. Spatial and temporal variations of solar radiation in forested streams based on aerial laser scanning data. International Journal of Applied Earth Observations and Geoinformation. (in review)

    59.Argman, E., Xu, C., Xu, Z.W., Zheng,G., Basson, U., Stavi, I. Eco-hydrological functioning of multi-aged dryland afforestation systems. Journal of Soil and Water Conservation.  (Accepted).

    58.Ma, L.X.,Yu,D.S.,Chen,Y.,Feng,T.Y.,Tang,H., Matthew J.S.,Zheng,G. Quantifying the plant areaindex of overstory and understory vegetation located within sloped terrain using terrestrial laser scanning.Agricultural and Forest Meteorology (in revision)


    **2023


    57.Qiao, Y.;Zheng,G., Du,Z.,Ma,X.,Li,J.,Moskal,L.M. Tree species classification and individual tree biomass model construction based on hyperspectral and lidar data. Remote Sens. 2023, 15, 1341

    56.Yun,Z.X., Zheng,G., Moskal,L.M., Li,J.R.,Gong,P. Stratifying forest overstory and understory using the global ecosystem dynamic investigation (GEDI)laser scanning data.International Journal of Applied Earth Observations and Geoinformation. 2023, 124, 103538

    55.Qi,Z.Y., Li,S.M.,Pang, Y.,Zheng,G., Kong,D., Li,Z.Y. Assessing spatiotemporal variations of forest carbon density using bi-temporal discrete aerial laser scanning data in Chinese Boreal forests. Forest Ecosystems. 2023 100135. 

    54.Ma,X.,Zheng,G.,Xu,C.,Yang, L.,Geng, Q., Li.J.R.,Qiao,Y,F. Mapping fine scale building heights in urban agglomeration with spaceborne lidar. Remote Sensing of Environment. 2023 (285), 113392.


    **2022

    53.Yun,Z.X.,Zheng,G.,Gong,P.Dynamic stratification for vertical forest structure using aerial laser scanning over multiple spatial scales.International Journal of Applied Earth Observations and Geoinformation. 2022(114) 103040

    52.Chen,B.,Teng,S.Q.,Zheng,G.,Xu,C.,Eitel, J.H.,et al. Inferring plant-plant interactions using remote sensing. Journal of Ecology. 2022 110(10) 2268-2287.

    51.Wu,B.X., Zheng,G.,Gu,Z.J., Zhang,W.M.,Chen, Y. Simulating the distribution of rainfall interception rate in a Masson pine plot using terrestrial laser scanning data. Hydrological processes. 2022 36(10) 1-17. 

    50.Ma, L.X., Yu, D.S., Zheng,G., Chen, Y. Modeling the view-angle dependence of the gap fraction in subtropical forets by using terrestrial laser scanning.Agricultural and Forest Meteorology,2022,321:108976.

    **2021

    49.Yun, Z.X.,Zheng,G. Stratifying forest overstory and understory for 3-D segmentation using terrestrial laser scanning data. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing.2021(14):12114-12131. 

    48.Li,S.H., Mason, J.A.,Xu, Y,H.,Xu,C., Zheng,G., Li, J.C., Yizhaq, H., Pan, S.M., Lu,H.Y., Xu,Z.W. Biogeomorphology of nebkhas in the Mu Us dune filed, north-central China: Chronological and morphological results. Gemorphology.2021(394),107979.

    47.Du, Z.H., Zheng,G.,Shen, G.C.,Moskal, L.M. Characterizing spatiotemporal distributions of forest canopy gaps for forest disturbances using multi-temporal aerial laser scanning data. International Journal of Applied Earth Observations and Geoinformation. 2021(104),102588

    46.Wu, B.X., Zheng,G.,Chen, Y., Yu, D.S. Assessing inclination angles of tree branches from terrestrial laser scanning data using a skeleton extraction method. International Journal of Applied Earth Observations and Geoinformation.2021(104),102589.

    45.Tian, S.H., Zheng,G., Eitel, J.H., Zhang, Q., Lidar-based 3-D Photosynthetically Active Radiation model reveals the spatiotemporal variations of forest sunlit and shaded leaves.Remote sensing, 2021,13(5):1002.

    44.Ma L , Zheng,G., Ying Q., Handcok,S., Ju,W.M., Yu,D.S. Characterizing the three-dimensional spatiotemporal variation of forest photosynthetically active radiation using terrestrial laser scanning data. Agricultural and Forest Meteorology, 2021,301-302:108346.


    **2020

    43.Xu, Z.S. Zheng, G., Moskal, L.M. Stratifying forest overstory for improving effective LAI estimation based on aerial imagery and discrete laser scanning data.Remote sensing,2020,12(13):2126

    42.Wu, B.X., Zheng, G., Ju, W.M. The local median filtering method for correcting the laser return intensity informaiton from discrete airborne laser scanning data. Remote sensing,, 2020.12,1681.

    41.Jiang, M., Lin, Y., Chan, T.O. Yao, Y., Zheng, G., Luo, S., Zhang, L., Liu, D. Geologic factors leadingly drawing the macroecological pattern of rocky desertification in southwest China.Scientific Report, 10,1440 (2020).

    40.Diao, J., Feng, T., Li, M.,Zhu, Z., Liu, J., Biging, G., Zheng, G., Shen, W., Wang, H., Wang, J., Ji, B.Use of vegetation change tracker, spatial analysis, and random forest regression to assess the evolution of plantation stand age in Southeast China. Annals of Forest Science,77,27 (2020). 

    39.Wang, X.; Zheng, G.; Yun, Z.; Xu, Z.S., Moskal, L.M., Tian, Q.J. Characterizing the spatial variations of forest sunlit and shaded components using discrete aerial lidar. Remote sensing,2020,12,1071.

    38.Wu, B.; Zheng, G.; Chen, Y. An Improved Convolution Neural Network-Based Model for Classifying Foliage and Woody Components from Terrestrial Laser Scanning Data. Remote sensing,2020,12,1010.

    37.Wang, X.; Zheng, G.; Yun, Z.; Moskal, L.M. Characterizing Tree Spatial Distribution Patterns Using Discrete Aerial Lidar Data.Remote sensing,2020,12,712.


    **2019

    36.Changqiao Hong, Xiaobin Jin, Yeting Fan, Xiaomin Xiang, Shuai Cao, Changchun Chen,Guang Zheng, Yinkang Zhou.Determining the effect of land consolidation on agricultural production using a novel assessment framework. Land Degradation & Development, 2020, 31(3).

    35.云增鑫, 郑光, 马利霞, 王晓菲, 卢晓曼, 路璐. (2019). 联合主被动遥感数据定量评价林下植被对叶面积指数估算的影响.遥感技术与应用(3).

    34.Zeng, K.; Zheng, G.; Ma, L.; Ju, W.; Pang, Y. Modelling Three-Dimensional Spatiotemporal Distributions of Forest Photosynthetically Active Radiation Using UAV-Based Lidar Data. Remote Sens. 2019,11, 2806.

    33.Zhu, F., Shen, W., Diao, J., Li, M., Zheng, G. Integrating cross-sensor high spatial resolution satellite images to detect subtle forest vegetation change in the Purple Mountains, a national scenic spot in Nanjing, China. Journal of Forestry Research. Journal of Forestry Research, 2019(5).


    **2018

    32.Xinlian Liang, Juha Hyyppä, Harri Kaartinen, Matti Lehtomäki, Jiri Pyörälä, Xiaowei Yu, Norbert Pfeifer, Hopkinson Cristopher, Pirotti Francesco, Brolly Gábor, Jan Heckenberg, Huabing Huang, Hyun-Woo Jo, Masato Katoh, Luxia Liu, Martin Mokroš, Jules Morel, Kenneth Olofsson, Jose Poveda-Lopez, Jan Trochta, Di Wang, Jinbu Wang, Bisheng Yang, Guang Zheng, Yunsheng Wang. International benchmarking of terrestrial laser scanning approaches for forest inventories, ISPRS Journal of Photogrammetry and Remote Sensing, 2018 144(137 - 179).

    31.路璐,郑光,马利霞. 激光雷达和点云切片算法结合的森林有效叶面积指数估算. 2018. 遥感学报 22(3):432 - 449.

    30.Ma, L.X., Zheng, G.Shiming Li, Yi, Lin, Weimin Ju. Retrieving forest canopy clumping index using terrestrial laser scanning data. 2018. Remote Sensing of Environment 210(2018) 452-472.


    **2017

    29.卢晓曼,郑光,居为民,戴声佩,高伦. 森林背景反射率对乔木层地上生物量遥感估算的影响研究——以大兴安岭林区为例. 林业资源 管理,2017.1.18: 59- 68.

    28.Lu, X.; Zheng, G; Miller, C.; Alvarado, E. Combining Multi-Source Remotely Sensed Data and a Process-Based Model for Forest Aboveground Biomass Updating. Sensors 2017, 17(9), 2062.

    27.Ma, L.X., Zheng, G., Eitel, Jan U.H., Magney, T.S., Moskal, L.M. Retrieving forest canopy extinction coefficient from terrestrial and airborne lidar. Agricultural and Forest Meteorology, 236(2017)1-21.

    26.Zheng, G. Ma, L.X., Eitel, J.U.H., He, W., Magney, T.S., Moskal, L.M., Li, M.S. Retrieving directional gap fraction, extinction coefficient, and effective leaf area index by incorporating scan angle information from discrete aerial laser scanning (ALS) data. IEEE Transactions on Geoscience and Remote Sensing. 2017. IEEE Transactions on Geoscience and Remote Sensing. 55(1) 577-590.


    **2016

    25.Geng, J., Chen, J.M., Tu, L.L., Tian, Q.J., Wang, L., Yang, R.R., Yang, Y.J., Huang, Y., Fan, W.L., Lv, C.G.,Zheng, G., Influence of the exclusion distance among trees on gap fraction and foliage clumping index of forest plantations. Trees - Structures and Function. 2016 30(5): 1683 - 1693.

    24.Eitel, J.U.H., Magney, T.S., Vierling, L.A., Greaves, H., Zheng, G. An automated method to quantify crop height and calibrate satellite-derived biomass using hypertemporal lidar. Remote Sensing of Environment. 187, 414-422, 15 December, 2016.

    23.Li, Y.M., Guo, Q.H., Tao,S.L., Zheng, G., Zhao, K.G., Xue, B.L., Su, Y.J. Derivation, validation, and sensitivity analysis of terrestrial laser scanning-based leaf area index. Canadian Journal of Remote Sensing, 2016. 42(6) 719-729.

    22.Ma, L. X. Zheng, G., Magney, T.S., Eitel, J. U. H.,Moskal, L. M. Determining woody-to-total area ratio using terrestrial laser scanning data. Agricultural and Forest Meteorology.228-229(2016), 217-228.

    21.Magney, T.S., Eitel, J. U. H., Griffin K.L., Boelman N. T., Creaves, H., Prager, C. M., Logan, B. A.Zheng, G., Ma, L.X., Fortin, E.A., Oliver, R.Y., Vierling, L.A. LiDAR canopy radiation model reveals patterns of photosynthetic partitioning in an arctic shrub. Agricultural and Forest Meteorology. 221(2016), 76-93.

    20.Kong, F.H. Yan, W.J.Zheng, G., Yin, H.W., Cavan, Gina, Zhan, W. F., Zhang, N., Cheng, L. Retrieval of three-dimensional tree canopy and shade using terrestrial laser scanning (TLS) data to analyze the cooling effect of vegetation. Agricultural and Forest Meteorology. 217(2016), 22-34.

    19.Zheng, G.,Ma, L.X., He, W., Eitel, J.U.H., Moskal, L.M., Zhang, Z.Y. Assessing the contribution of woody materials to forest angular gap fraction and effective leaf area index using terrestrial laser scanning (TLS) data. IEEE Transactions on Geoscience and Remote Sensing. 2016 54(3) 1475-1487.

    18.Ma, L.X., Zheng, G., Eitel, J.U.H., Moskal, L.M., He, W., Huang, H. B. Improved salient feature-based approach for automatically separating photosynthetic and nonphotosynthetic components within terrestrial lidar point cloud data of forest canopies. IEEE Transactions on Geoscience and Remote Sensing.2016, 54(2) 679-696.


    **2015

    17.Zhang, C.H., Ju, W.M., Chen, J.M., Wang, X., Yang, L., Zheng, G., Disturbance-induced reduction of biomass carbon sinks of China’s forests in recent years. Environmental Research Letters 10 (11), 114021

    16.马利霞,郑光,何维,居为民,程亮. 叶方向3维空间分布的地面激光雷达反演与分析, 遥感学报, 2015, 5(4):609 - 617.

    15.王璟睿,沈文娟,李卫正,李明诗,郑光. 基于RapidEye的人工林生物量遥感反演模型性能对比. 西北林学院学报.2015 (6): 196 - 202.


    **2014

    14.刘鲁霞,庞勇,李增元,徐光彩,李丹,郑光. 用地基激光雷达提取单木结构参数——以白皮松为例. 遥感学报. 2014(2): 365 - 377.


    **2013

    13.李登秋,居为民,郑光,柳艺博,昝梅,张春华,黄金龙. 基于生态过程模型和森林清查数据的森林生长量估算对比研究. 生态环境学报, 10期2013(10): 1647-1657.

    12.刘洋,刘荣高,陈镜明,程晓,郑光. 叶面积指数遥感反演研究进展与展望. 地球信息科学学报, 2013(5): 734-743

    11.黄金龙,居为民,郑光,康婷婷. 基于高分辨率遥感影像的森林地上生物量估算. 生态学报。. 2013. (20): 6497 - 6508.

    10.Zheng, G., Moskal, L.M., Kim, S.H. Retrieval of effective leaf area index in heterogeneous forests with a terrestrial laser scanner. 2013. IEEE Transactions on Geoscience and Remote Sensing. 51(2) 777-786.

    9.Lu, Y.C., Li, X., Tian, Q. J.,Zheng, G., Sun, S. J., Liu, Y. X., Yang, Q. Progress in marine oil spill optical remote sensing: detected targets, spectral response characteristics, and theories. 2013. Marine Geodesy, 36 (3), 334-346

    8.Lu, Y.C., Tian, Q.J., Wang X.,Zheng, G., Li, X., Determining oil slick thickness using hyperspectral remote sensing in the Bohai Sea of China. 2013. International Journal of Digital Earth 6 (1), 76-93

    7.Lu, Y.C.,Zheng, G.,Tian, Q.J., Lyu, C.G., Sun, S.J., Analyzing the effects of particle size on remotely sensed spectra: a study on optical properties and spectral similarity scale of suspended particulate matters in water. Applied optics 52 (4), 879-888


    **2012

    6.Zheng, G.and Moskal, L. M. Computational geometry based retrieval of effective leaf area index using terrestrial laser scanning. 2012. IEEE Transactions on Geoscience and Remote Sensing, 50(10), 3958-3969.

    5.Zheng, G.and Moskal, L. M. Leaf orientation retrieval from terrestrial laser scanning. 2012, IEEE Transactions on Geoscience and Remote Sensing, 50(10), 3970-3979.

    4.Zheng, G.and Moskal, L.M., Spatial variability of terrestrial laser scanner based leaf area index. International Journal of Applied Observation and Geoinformation. 2012(19), 26-237.

    3.Moskal, L.M and Zheng, G. Retrieving forest inventory variables with terrestrial laser scanning in urban heterogeneous forest. 2012,Remote Sensing, 4, 1-20.


    **before 2011

    2.Zheng, G.and Moskal, L. M. Retrieving Leaf Area Index (LAI) Using Remote Sensing: Theories, Methods and Sensors. 2009,Sensors,9 (4):2719-2745.

    1.Zheng, G., Chen, J.M., Tian, Q.J., Ju, W.M., Xia, X.Q. Combining remote sensing imagery and forest age inventory for biomass mapping. 2007, Journal of Environmental Management, 85(3) pp: 616-623.


    授权发明专利:

    6. 一种利用三维点云数据定量刻画森林聚集效应的方法 郑光、马利霞 、居为民、王晓菲、路璐、云增鑫。

    专利号:ZL201710893471.3  授权时间:2022.05.24 

    5.一种基于点云半球切片估算森林叶面积指数的方法 郑光 、马利霞、何维、卢晓曼 、张乾、路璐。

    专利号:ZL201510655584.0  授权时间:2018.06.04

    4. 一种利用航空激光点云计算有效叶面积指数的方法 郑光 、马利霞、何维、卢晓曼 、张乾、路璐。

    专利号:ZL201510655585.5 授权时间:2017.12. 07

    3.一种基于模式识别的森林三维点云分类方法  李艳、马利霞、郑光、居为民。

    专利号:ZL201310283752.9 授权时间:2016.12.28

    2.一种基于小支持域正则化逆卷积的遥感影像恢复方法  李艳、郑光。 

    专利号:ZL201310228261.4 授权时间:2015.08.26

    1. 一种利用激光点云计算三维森林冠层消光系数的方法 郑光、张乾、冯永康。

    专利号:ZL201210260635.6 授权时间:2015.01.14


    登记软件著作权:

    3. 三维森林场景定量分析与可视化系统[3-D FVAS]  登记号:2018SR069837

    2. 基于模式识别的森林点云数据自动分类系统 [FPCAC V 1.0]  登记号:2014SR053518

    1. 激光雷达提取植被冠层三维结构参数软件 [Toolkit for Terrestrial LiDAR]  登记号:2011SR090822





  • Impacts of Climate Change on the Pacific NorthWest (PNW)





    Academic talk given in the Western Washington University (WWU) on Jan.26, 2023.(Video






  • COURSES: Object Oriented Programming - C++ 

    Instructor: Dr. Guang Zheng, Dr. Shuzhuang Feng, Dr.Chen Ji

    Email: zhengguang@nju.edu.cn


    C/C++ IDE/Complier tools:

    1. Visual Studio Express (free download)

    2. Eclipse CDT (C/C++ Development Tooling) (free download)

    3. Code::Blocks- Opensource (free download)

    4. GCC Complier (free download)

    5. MinGW (free download)

    6. Microsoft DreamSpark (website).



    How to learn C++ programming?

    LEVEL - 1: (C++)

    1. Essential C++, by Stanley B. Lippman

    2. C++ The Core Language, by Doug Brown, Gregory Satir

    3.The Complete C++ Training Course, 4th Edition, by Harvey M. Deitel, Paul J. Deitel

    4. C++ How to Program (Early Objects Version) (9th Edition) (Deitel, How to Program), by Paul Deitel, Harvey Deitel

    5.Standard C++ Bible, by Al Stevens, Clayton Walnum

    6. Thinking in C++, by Bruce Ecker

    7. C++ Primer (5th Edition), by Stanley B. Lippman, Josee Lajoie, Barbara E. Moo.

    8.The C++ Programming Language: Special Edition (3rd Edition), By Bjarne Stroustrup


    LEVEL - 2: (C++/ OOP)

    1. More Effective C++: 35 New Ways to Improve Your Programs and Designs, by Scott Meyers

    2. Effective C++, Effective C++: 55 Specific Ways to Improve Your Programs and Designsby Scott Meyers.

    3. Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions, by Herb Sutter

    4. More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions. by Herb Sutter.


    LEVEL - 3: (C++ Object Model)

    1. The Annotated C++ Reference Manual, by Margaret A. Ellis, Bjarne Stroustrup

    2.Inside the C++ Object Model, by Stanley B. Lippman


    LEVEL - 4: (C++/ Patterns)

    1. Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma

    2. Modern C++ Design: Generic Programming and Design Patterns Applied, by Andrei Alexandrescu

    Generic programming / STL:

    1. The C++ Standard Library: A Tutorial and Reference, by Nicolai M. Josuttis

    2. Generic Programming and the STL: Using and Extending the C++ Standard Template Library, by Matthew H. Austern

    3. The C++ Standard Template Library, by P.J. Plauger, Alexander A. Stepanov, Meng Lee, David R. Musser.



    VTK-DEMO CODES:

    (1) VTK_C++ Demo code (visual.txt, twotree.txt, CMakeLists.txt)

    (2) VTK source code (download

    (3) CMake application (download)

    Please follow the instruction (VTKInstruction.pdf) step by step to conifgure the running enviornment caerfully. Once you successfully set up the VTK libarary in your computer, you can go ahead to compile the source demo code using the cross-platform compiler CMake application and attached visual.cxx.file. Finally, you can get the nice 3-D visulization result with the demo point cloud data file named twotree.txt as the following picture: 


    LAB-1:

    (1) Get yourself familiar with and configure the C/C++ development environment in various OS;

    (2) Successfully configure your C/C++ compiler;

    (3) Lab exercise-1: please write a piece of C code to first get five different integers from input, and then output the smallest one.

    (4) Lab exercise-2: please write a piece of C code to first get a ten-digit integer number, and then output the 10 digits with a space as a separator.

    (5) Please submit your home work through the submission system.

    (6) Yes, you are finished, good job!

    LAB-2 :

    (1). Convert the C-Style code in the previous lab into C++ style code and run the program and get correct output;

    (2). Please write a piece of C++ CODE to define a class named “ClassBook”. In this class, several private members should be defined to describe: 1. studentName; 2. studentID; 3. studentBirthYear; In addition, some member functions are needed to manipulate the private members to set their values and input and output;

    (3). Good luck!

    LAB-3:

    (1) Please create a C++ class named Rectangle which contains two private members (i.e., length and width) in float data type with the same default values as 1.0. Two member functions (i.e., ComputePerimeter and ComputeArea) should be provided to calculate the perimeter and area of a given rectangle. In addition, the SET and GET functions should also be given to configure the values of private members. Moreover, the function should be implemented in your SET function to double check if the length and width are valid and ranging from 0.0 to 20.0. Finally, please write your own main function code to see if you get what you want:) Good luck!

    (2) Please make sure that you define and implement your class in separate header and *.cpp files, respectively, three files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-4:

    Provide an enhanced TIME class with a new member function named “Tick”, the new Tick function allows increasing one second per time. Please make sure all the data members are always valid. In addition, an execution program should be provided to test the TIME class. The following functions should be achieved:

    (1) Print the standard time in each loop to test if the function “Tick” works normally;
      (2) Please make sure that you can increase to the next “minute”;
      (3) Please make sure that you can increase to the next “hour”;
      (4) Please make sure that you can increase to the next “day” (i.e., increase time from 11:59:59 PM to 12: 00:00 AM).

    (5) Please make sure that you define and implement your class in separate header and *.cpp files, respectively, three files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-5:

    Please create a sophisticated C++ class named Rectangle, this class stores four Cartesian coordinates of the four corners of the rectangle, the following functions should be achieved:

    (1) The constructor calls a SET function to accepts four sets of coordinates;

    (2) Verifies that each of these is in the first quadrant with no single x- or y- coordinate larger than 20.0;

    (3) Please create a Draw member function to display the rectangle inside a 25-by-25 box enclosing the portion of the first quadrant;

    (4) Please provide a setFillCharacter member function to specify the character out of which the body of the rectangle will be drawn;

    (5) Please make sure that the setPerimeterCharacter member function is used to specify the character that will be used to draw the border of the rectangle;

    (6) Please create a member function named Scale to change the size of the rectangle;

    (7) Please create a member function named Rotate to rotate the rectangle around its geometric center about 30 degrees.

    (8) Please make sure that you define and implement your class in separate header and *.cpp files, respectively, three files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    (9) Good luck!

    LAB-6:

    Please create a C++ class named SavingAccount which includes:

    (1) a STATIC-TYPE data member named annualInterestRate is provided to store the annual interest for the money-saver;

    (2) a private data member of savingBalance is used to store the balance in current bank account;

    (3) member function named calculateMonthlyInterest which is used to calculate the monthly interest by multiplying the 'annualInterestRateand then divided by 12 (i.e., the twelve months per year). The calculated interest will be added into the balance of the current saving account;

    (4) a static member function named modifyInterestRate is needed to refresh and update the values of annualInterestRate;

    (5) A test program should be written to test the functions of the SavingAccount class. Two objects named saver-1 and saver-2 will be defined with the balance as $ 3800 and $2300, respectivley. Please set the annualInterestRate as 5.45% and 6.85% to calculate the monthly interest and output the final balance in the next month.;

    (6) Please make sure that you define and implement your class in separate header and *.cpp files, respectively, three files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    (7) Good luck!

    LAB-7:

    This exercise will be an enhanced version of the Lab work from week-4. The main goal of this lab is to learn how to manipulate two C++ classes which one class has been declared as a friend class of the other one.

    Please provide two C++ classes named TIME and DAY with a member function named “Tick”, the new Tick function allows increasing one second per time. Please make sure all the data members are always valid. In addition, an execution program should be provided to test the TIME and DAY classes. The following functions should be achieved:

    (1) Print the standard time in each loop to test if the function “Tick” works normally;
      (2) Please make sure that you can increase to the next “minute”;
      (3) Please make sure that you can increase to the next “hour”;
      (4) Please make sure that you can increase to the next “day” (i.e., increase time from 11:59:59 PM to 12: 00:00 AM).

    (5) Please make sure that you define and implement your classes in separate header and *.cpp files, respectively, five files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-8:

    This exercise is to overload the operator parentheses () operator to allow another form of double array subscripting like: Array [row] [column] for any array of objects, overload the function call operator to allow the alternate form: Array (row, column).

    Please create a C++ class named DoubleArray to access the elements of a 5-by-5 matrix A in the form of A (row, column). the operator () should provide the correct pointer operation. In addition, you should provide the functions to correctly overload the operator ==, !=, <<,>> to compare, input, and output the elements of the matrix.

    Please make sure that you define and implement your classes in separate header and *.cpp files, respectively, three files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-9:

    In this lab, you need to create a C++ class hierarchy, it contains a base class named Package and two inherited classes named TwoDayPackageand OvernightPackage. In the base class Package, you will need to provide several private data members such as SenderName, ReceiverName, Address, City, Province, ZipCode, Weight, and UnitPrice. A default constructor function should be provided to initialize all data members and make sure that the values of Weight and UnitPrice are positive numbers. A public member function named calculateCost should also be provided to obtain the final price of package delivery.

    In terms of the inherited class of TwoDayPackage and OvernightPackage, they should inherit all functions of base class Package. Two additional data members named TwoDayCost and OvernightCost should be provided and initialized. Moreover, the implementation of member functions calculateCost in each inherited class should be updated accordingly by adding the TwoDayCost and OvernightCost to the previous costs obtained in the base class Package.

    Please make sure that you define and implement both base and inherited classes in separate header and *.cpp files, respectively, seven files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp for one base class and two inherited classes, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-10:

    In this lab, you will need to create a three-layer C++ class hierarchy, it contains a base class named Shape with the virtual member function GetArea. It has a second-layer inherited class named TwoDimensionalObject which contains the virtual member functions of GetArea and GetPerimeter. Moreover, The TwoDimensionalObject has four third-layer inherited classes named Rectangle, Square, Circle and Triangle. For each two-dimensional object, you will need to implement the specific member functions (i.e., GetArea and GetPerimeter) in their own class to obtain the AREA and PERIMETER using correct methods.

    Please make sure that you define and implement both base and inherited classes in separate header and *.cpp files, respectively, and create the three-layer class hierarchy. Thirteen files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp for one base class, one second layer inherited class, four third-layer inherited class, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-11:

    This exercise is to write a template-based class to 5*5 MATRIX class. First, it has the ability to accommodate different types of elements such as double, float, char, string, etc.. Moreover, please overload the operator parentheses ( ) to allow accessing an element through the array subscripting like: Array [row] [column], overload the function call operator to allow the alternate form: Array (row, column).

    Please create a C++ class named AnyArray to access the elements of a 5-by-5 matrix A in the form of A (row, column). the operator ( ) should provide the correct pointer operation. In addition, you should provide the functions to correctly overload the operator ==, !=, <<,>> to compare, input, and output the elements of the matrix.

    Please make sure that you define and implement your classes in separate header and *.cpp files, respectively, three files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

    LAB-12:

    In this lab, you will need to create a three-layer C++ class hierarchy, it contains a base class named Shape with the virtual member function GetArea. It has a second-layer inherited class named ThreeDimensionalObject which contains the virtual member functions of GetVolume and GetPerimeter. Moreover, The ThreeDimensionalObject has four third-layer inherited classes named Cone, Cylinder, and Sphere. For each three-dimensional object, you will need to implement the specific member functions (i.e., GetVolume and GetPerimeter) in their own class to obtain the VOLUME and PERIMETER using correct methods.

    In addition, you will visualize the three 3-D objects in the VTK environment based on the geometric parameters such as diameter and height. Please make sure first successfully set up the VTK running environment by following the instructions provided in the VTK Demo practice.

    Please make sure that you define and implement both base and inherited classes in separate header and *.cpp files, respectively, and create the three-layer class hierarchy. Eleven files in total (i.e., header files for class definition (*.h); implementation file for class as *.cpp for one base class, one second layer inherited class, three third-layer inherited class, and your execution file (main.cpp)) should be submitted with the screenshot of your final result, thanks!

     

    Here is the reference code for VTK Cube visulization: https://examples.vtk.org/site/Cxx/GeometricObjects/Cube/


版权所有 © 南京大学